从R中的string中删除所有特殊字符?

如何删除R中给定string中的所有特殊字符并用空格replace每个特殊字符?

删除的特殊字符是: ~!@#$%^&*(){}_+:"<>?,./;'[]-=

regex [:punct:]将会完成一半的工作。

问题2:但是,如何从外语中删除这些字符: â í ü Â á ą ę ś ć

Answer_2:用regexregex [^a-zA-Z0-9]replace[^[:alnum:]]
regex[^a-zA-Z0-9]

您需要使用正则expression式来识别不需要的字符。 对于最容易stringr代码,你需要stringr包中的str_replace_all ,尽pipebase R中的gsub也可以工作。

确切的正则expression式取决于你正在尝试做什么。 您可以删除问题中提供的特定字符,但删除所有标点符号要容易得多。

 x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever str_replace_all(x, "[[:punct:]]", " ") 

(基本R等价物是gsub("[[:punct:]]", " ", x) 。)

另一种方法是换出所有非字母数字字符。

 str_replace_all(x, "[^[:alnum:]]", " ") 

请注意,根据您的语言环境,字母,数字或标点符号的定义略有不同,因此您可能需要稍微尝试一下才能得到您想要的内容。

而不是使用正则expression式来删除这些“疯狂的”字符,只是将它们转换为ASCII,这将删除口音,保持字母。

 astr <- "Ábcdêãçoàúü" iconv(astr, to = "ASCII//TRANSLIT") 

这导致了

 [1] "Abcdeacoauu"