2

我正在执行一项搜索和销毁任何亚马逊认为令人反感的任务。在过去,我通过iconv将“UTF-8”转换为“latin1”来处理这个问题,但在这里我不能这样做,因为它被编码为“未知”:

test <- "Gwena\xeblle M"
> gsub("\xeb","", df[306,"primauthfirstname"] )
[1] "Gwenalle M"
> Encoding(df[306,"primauthfirstname"])
[1] "unknown"

那么什么正则表达式消除了所有 \x## 代码?

4

2 回答 2

3

我相信这种模式应该有效:

pat <- "[\x80-\xFF]"

test <- c("Gwena\xeblle M", "\x92","\xe4","\xe1","\xeb") 
gsub(pat, "", test, perl=TRUE)
# [1] "Gwenalle M" ""           ""           ""           ""     

解释:

它之所以有效,是因为字符类"[\x00-\xFF]"将匹配表单的所有字符\x##。但是其中的前半部分——第 0 到第 127(或十六进制数字中的第00'th 到'th)——是ASCII 字符。所以它是它们的后半部分——第 128 到第 255(或十六进制模式下的第'th 到'th)——你想要搜索并销毁。7F80FF

于 2012-07-06T22:20:06.973 回答
2

我通过 iconvlist() 循环了一下,发现了这个(以及其他组合):

test<-"Gwena\xeblle M"
iconv(test,"CP1163","UTF-8")
 [1] "Gwenaëlle M"

我意识到,这不是您所要求的,但有可能找到正确的编码。

于 2012-07-06T22:26:40.610 回答