如何删除R中字符串中的所有特殊字符并将其替换为空格?
要删除的一些特殊字符是:~!@#$%^&*(){}_+:"<>?,./;'[]-=
我尝试过带有[:punct:]
模式的regex
,但它只删除标点符号。
问题2:如何从外语中删除字符,如:â í ü Â á ą ę ś ć
?
答:使用[^[:alnum:]]
删除~!@#$%^&*(){}_+:"<>?,./;'[]-=
,并使用[^a-zA-Z0-9]
删除regex
或regexpr
函数中的â í ü Â á ą ę ś ć
。
base R中的解决方案:
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-="
gsub("[[:punct:]]", "", x) # no libraries needed
发布于 2012-04-24 17:01:29
您需要使用regular expressions来识别不需要的字符。对于最易读的代码,您需要来自stringr
包的str_replace_all
,尽管来自基R的gsub
也同样有效。
确切的正则表达式取决于您尝试执行的操作。您可以只删除问题中给出的那些特定字符,但删除所有标点符号要容易得多。
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")
(基本的R等效项是gsub("[[:punct:]]", " ", x)
。)
另一种方法是换出所有非字母数字字符。
str_replace_all(x, "[^[:alnum:]]", " ")
请注意,字母、数字或标点符号的定义因您的语言环境而略有不同,因此您可能需要尝试一下才能准确地获得您想要的内容。
发布于 2017-08-29 22:27:00
不使用正则表达式来删除这些“疯狂”的字符,只需将它们转换为ASCII,这将删除重音,但将保留字母。
astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')
这导致了
[1] "Abcdeacoauu"
发布于 2017-12-12 15:19:02
将特殊字符转换为撇号,
Data <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)
下面对其进行编码以删除多余的‘撇号
Data <- gsub("''","" , Data ,ignore.case = TRUE)
使用gsub(..)
函数将特殊字符替换为撇号
https://stackoverflow.com/questions/10294284
复制相似问题