从R中的string中删除所有特殊字符?
如何删除R中给定string中的所有特殊字符并用空格replace每个特殊字符?
删除的特殊字符是: ~!@#$%^&*(){}_+:"<>?,./;'[]-=
regex [:punct:]
将会完成一半的工作。
问题2:但是,如何从外语中删除这些字符: â í ü Â á ą ę ś ć
?
Answer_2:用regex
或regex
[^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"