readLines将连字符( - )转换为\ x

时间:2014-11-17 22:24:54

标签: regex r

readLines正在将.txt文件中的连字符“ - ”转换为“\ x”。为什么?我试过玩弄编码,但没有成功。我也尝试使用gsub和str_replace_all(stringr包)用后面的实际连字符“ - ”替换后端的“\ 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.")

我尝试用“

”代替“\ x”的代码的一种变体
record <- str_replace_all(record, pattern="\x", replace="-", fixed=FALSE)

另外,对于我的启发,“\ x”是什么意思?它只是一个连字符还是某种特殊的字符?

提前致谢。

编辑:

以下是文本在.txt文件中的显示方式:

IN ASSEMBLY。

中国诉讼程序

- OF THE -

FORTY-SECOND SESSION

- OF THE -

威斯康星州立法会。

18QS。

因此为什么我认为它是连字符。感谢响应者。

1 个答案:

答案 0 :(得分:4)

你很困惑。它不是&#34; \ x&#34;。 &#34; \ xd1&#34;的显示实际上是在您的字体中没有表示的单个字符的显示。它是一个非打印字符(可能是一个&#34;长划线&#34;),它被显示为转义序列。要摆脱它,你需要使用带有额外反斜杠的gsub,因为R和正则表达式都使用反斜杠作为它们的转义字符&#34;

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