如何在R中删除或转换Latin-1编码的字符?

时间:2017-04-24 20:02:34

标签: r

下面是我需要删除Latin-1编码字符的输入字符串,即'\ xf0'。

str< - “b'RT @galacticemp:跨界水的想法堵塞\\ xf0 \\ x9f \\ x92 \\ xa1 \\ xf0 \\ x9f \\ x92 \\ xa6与@dstgovza @GlobalDevLab #ibmresearchwits @ WitsUniversity @IBMResearch @USEmbassySA @ \\ xe2 \\ x80 \\ xa6'“

iconv(x,“latin1”,“ASCII”,sub =“”)
我尝试了很多方法但未能删除或转换。

在这里我注意到,如果我有一个反斜杠,代码可以工作,但是对于双反斜杠,它会失败。任何解决方法或正则表达式模式(gsub函数)删除建议将帮助我很多。感谢。

1 个答案:

答案 0 :(得分:1)

如果您只想删除它们,可以使用gsub

执行此操作
gsub("[\x80-\xff]", "", str)
[1] "b'RT @galacticemp: transboundary water idea jam   with @dstgovza @GlobalDevLab #ibmresearchwits @WitsUniversity @IBMResearch @USEmbassySA @'"

为了清楚起见,这样做是用空字符串替换任何编号为128-255的字符。

修改: 基于来自OP的更新信息,我现在认为字符串不包含unicode字符,而是包含unicode字符的转义码。这些可以以类似的方式删除,但现在您必须指定一个描述这些转义码的模式。

str <- "b'RT @galacticemp: transboundary water idea jam \\xf0\\x9f\\x92\\xa1 \\xf0\\x9f\\x92\\xa6 with @dstgovza @GlobalDevLab #ibmresearchwits @WitsUniversity @IBMResearch @USEmbassySA @\\xe2\\x80\\xa6'"
gsub("\\\\x[89a-f][0-9a-f]", "", str)
[1] "b'RT @galacticemp: transboundary water idea jam   with @dstgovza @GlobalDevLab #ibmresearchwits @WitsUniversity @IBMResearch @USEmbassySA @'"