2016-02-25 127 views
4

我想删除我的字符串中的一些非常特殊的字符。 我读过的其他职位,如:R如何删除字符串中的特殊字符?

  1. Remove all special characters from a string in R?
  2. How to remove special characters from a string?

但这些都不是什么即时寻找。

可以说,我的字符串是如下:

s = "who are í ½í¸€ bringing?" 

我已经试过以下:

test = tm_map(s, function(x) iconv(enc2utf8(x), sub = "byte")) 
test = iconv(s, 'UTF-8', 'ASCII') 

上面这些都不奏效。

编辑: 我正在寻找一个通用解决方案! 我不能(也不愿意)手动识别所有特殊字符。

也是这些非常特殊字符(不是100%确定),从表情

请帮助或引导我正确的帖子引起。 谢谢!

+1

我认为真正的问题是,你是如何与乱码字符串?如果您向后退到您生成此字符串的方式,您可以调整该步骤以获取所需的输出。 –

+1

所以,我只是用gsub尝试过,它似乎工作。像这样:'s2 < - gsub(“€”,“”,s)'。试着这样做。基本上将“s”字符串中的“€”实例更改为无效,从而有效地将其删除。 – giraffehere

+0

@RichardScriven我不是很确定,但可能来自表情 – alwaysaskingquestions

回答

4

所以,我要继续前进,使一个答案,因为我相信这是你在找什么:

> s = "who are í ½í¸€ bringing?" 
> rmSpec <- "í|½|€" # The "|" designates a logical OR in regular expressions. 
> s.rem <- gsub(rmSpec, "", s) # gsub replace any matches in remSpec and replace them with "". 
> s.rem 
[1] "who are ¸ bringing?" 

现在,这确实有,你必须手动定义警告rmSpec变量中的特殊字符。不知道您是否知道要删除哪些特殊字符,或者您是否需要更通用的解决方案。

编辑:

所以看起来你几乎iconv有了它,你只是缺少sub说法。见下:

> s 
[1] "who are í ½í¸€ bringing?" 
> s2 <- iconv(s, "UTF-8", "ASCII", sub = "") 
> s2 
[1] "who are bringing?" 
+0

亚......即时通讯寻找更一般的解决方案。手动识别所有特殊字符在我的情况下几乎是不可能的(因为我有一个非常大的数据集,我不希望通过它们一个接一个地找出我有哪些/哪些特殊字符) – alwaysaskingquestions

+0

@alwaysaskingquestions请参阅我在我的编辑回答。 'iconv'中有一个额外的参数,你错过了。 – giraffehere

+1

您也可以指定一组要替换的字符,例如'gsub(“[í€]),”“,s)',这比使用'|'多次更简单 – thelatemail

相关问题