我正在搜索和销毁亚马逊发现令人反感的任务。在过去,我通过使用iconv
将“UTF-8”转换为“latin1”来解决这个问题,但我不能这样做,因为它被编码为“未知”:
test <- "Gwena\xeblle M"
> gsub("\xeb","", df[306,"primauthfirstname"] )
[1] "Gwenalle M"
> Encoding(df[306,"primauthfirstname"])
[1] "unknown"
那么正则表达式消除了所有\ x ##代码?
答案 0 :(得分: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
'到7F
'以十六进制数字表示) - 是the ASCII characters。所以它是它们的后半部分 - 在十六进制模式中的第128到第255(或80
'到FF
') - 你要搜索并销毁。
答案 1 :(得分:2)
我通过iconvlist()循环了一下,发现了这个(以及其他组合):
test<-"Gwena\xeblle M"
iconv(test,"CP1163","UTF-8")
[1] "Gwenaëlle M"
我意识到,这不是你要求的,但可能找到正确的编码。