从R中的字符串中删除所有特殊字符?
如何删除R中给定字符串中的所有特殊字符并用空格替换每个特殊字符?从R中的字符串中删除所有特殊字符?
特殊字符删除有:[email protected]#$%^&*(){}_+:"<>?,./;'[]-=
regex [:punct:]
将会使一半的工作。
问题2:但是如何删除这些外文字符:â í ü Â á ą ę ś ć
?
ANSWER_2:在regex
或regexpr
更换[^[:alnum:]]
与[^a-zA-Z0-9]
:regex[^a-zA-Z0-9]
您需要使用regular expressions识别不想要的字符。对于最容易读取的代码,您需要从stringr
包中获得str_replace_all
,但来自基础R的gsub
也同样适用。
确切的正则表达式取决于你正在尝试做什么。您可以删除问题中提供的特定字符,但删除所有标点符号会更容易。
x <- "[email protected]#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")
(碱基r当量是gsub("[[:punct:]]", " ", x)
。)
一种替代方法是换出所有非字母数字字符。
str_replace_all(x, "[^[:alnum:]]", " ")
需要注意的是什么构成一个字母或数字或punctuatution标志会略有不同,这取决于您的语言环境,所以你可能需要尝试一点点地得到你想要什么的定义。
好的答案+1你可能想用'“”替换'''''',否则你的字符串中会有空的空白。 – 2012-04-24 10:50:44
@TylerRinker:虽然QBik特别要求空间,但的确如此。 – 2012-04-24 13:04:04
良好的通话,错过了。 – 2012-04-24 13:40:06
而不是使用正则表达式来删除这些“疯狂”的字符,只是将它们转换为ASCII,这将删除重音符号,保持字母。
astr <- "Ábcdêãçoàúü"
iconv(astr, to = "ASCII//TRANSLIT")
导致
[1] "Abcdeacoauu"
转换的特殊字符,撇号,
Data <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)
下面的代码以去除多余的 ''”撇号
Data <- gsub("''","" , Data ,ignore.case = TRUE)
使用gsub(..)
功能用撇号替换特殊字符
“特殊字符”的定义是什么? – kohske 2012-04-24 08:28:57
我自己的定义是每个不是Unicode的字符;-)。但我想很多其他人会不同意。 – Joey 2012-04-24 08:31:17
也许看看'sub'或'gsub'函数。 – 2012-04-24 08:53:27