2014-11-17 3 views
2

readLines преобразует дефисы "-" в .txt-файле в "\ x". Зачем? Я пробовал играть с кодировкой, но без успеха. Я также попытался использовать gsub и str_replace_all (пакет stringr), чтобы заменить «\ x» на задней панели фактическим дефисом «-».readLines преобразует дефис (-) в x

record <- readLines(con="~/Dropbox/WisconsinLeg/input/WI_1895.txt", encoding="UTF-8") 

Я не могу прикрепить файл .txt попробовать чтение в, но вот некоторые выборочные данные, когда он считывается в R, используя продолжающуюся строку кода:

c("IN ASSEMBLY.", "JOURNAL OF PROCEEDINGS", "\xd1 OF THE-", "FORTY-SECOND SESSION","\xd1 OF THE \xd1", "WISCONSIN LEGISLATURE.") 

Один из вариантов код, который я пытался заменить «\ х» с:

record <- str_replace_all(record, pattern="\x", replace="-", fixed=FALSE) 

Кроме того, для моего назидания, что делает «\ х» означает? Это просто дефис или это какой-то особый характер?

Заранее спасибо.

EDIT:

Вот как текст выглядит в текстовом файле:

В СОБРАНИИ.

ЖУРНАЛ ПРОТОКОЛ

- теоретиче-

сорок второй сессии

- ИЗ -

ВИСКОНСИН ЗАКОНОДАТЕЛЬНАЯ.

18QS.

Следовательно, почему я предположил, что это дефис. Благодаря ответчикам.

+1

Это не' \ x', это '\ xHH' где' HH' есть два шестнадцатеричные символы. '\ xd1' означает« символ с ASCII значением 0xD1 (hex) ». –

ответ

4

Вы в замешательстве. Это не «\ x». Отображение «\ xd1» на самом деле является отображением одного символа, который не имеет представления в вашем шрифте. Это непечатаемый символ (вероятно, «длинный тире»), который отображается как escape-последовательность. Для того, чтобы избавиться от него, вам нужно использовать GSUB с дополнительными обратными слэшами, потому что оба R и регулярное использование обратной косой черты в качестве экранирующего символа»

gsub("\\\xd1", "_", x) 
#[1] "IN ASSEMBLY."   "JOURNAL OF PROCEEDINGS" "_ OF THE-"    
#[4] "FORTY-SECOND SESSION" "_ OF THE _"    "WISCONSIN LEGISLATURE."