【问题标题】:R how to remove VERY special characters in strings?R如何删除字符串中非常特殊的字符?
【发布时间】:2016-06-08 22:28:45
【问题描述】:

我正在尝试删除字符串中的一些非常特殊的字符。 我读过其他帖子,例如:

  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% 确定)来自表情符号

请帮助或指导我找到正确的帖子。 谢谢!

【问题讨论】:

  • 我认为真正的问题是,你是怎么处理乱码的?如果您退后一步,回到生成此字符串的方式,您可能可以调整该步骤以获得您想要的输出。
  • 所以,我只是用 gsub 尝试了这个,它似乎可以工作。像这样:s2 <- gsub("€", "", s)。尝试这样做。基本上将您的字符串中的“€”实例更改为空,有效地删除它们。
  • @RichardScriven 我不太确定,但可能来自表情符号
  • @giraffehere 你有更通用/更少手动的方法吗?

标签: r special-characters


【解决方案1】:

所以,我将继续回答,因为我相信这就是您要寻找的:

> 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?"

【讨论】:

  • 是的...我正在寻找更通用的解决方案。在我的情况下,手动识别所有特殊字符几乎是不可能的(因为我有一个非常大的数据集,我不想一一查看它们来找出我有哪些/哪些特殊字符)
  • @alwaysaskingquestions 在我的回答中查看我的编辑。 iconv 中还有一个附加参数,您丢失了。
  • 也可以像gsub("[í½€¸]","",s)一样指定一组要替换的字符,比多次使用|简单
  • @thelatemail 我总是忘记这一点。感谢您的补充!
猜你喜欢
  • 1970-01-01
  • 2021-10-22
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2011-04-11
  • 2016-01-23
相关资源
最近更新 更多