[英]Remove all special characters from a string in R?
如何从 R 中的字符串中删除所有特殊字符并用空格替换它们?
要删除的一些特殊字符是: ~!@#$%^&*(){}_+:"<>?,./;'[]-=
我用[:punct:]
模式尝试了regex
,但它只删除标点符号。
问题2:以及如何从外语中删除字符,例如: â í ü Â á ą ę ś ć
?
答案:使用[^[:alnum:]]
删除~!@#$%^&*(){}_+:"<>?,./;'[]-=
并使用[^a-zA-Z0-9]
在regex
或正则表达式函数中删除â í ü Â á ą ę ś ć
regexpr
基础 R 中的解决方案:
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-="
gsub("[[:punct:]]", "", x) # no libraries needed
您需要使用正则表达式来识别不需要的字符。 对于最易于阅读的代码,您需要stringr
包中的str_replace_all
,尽管来自基本 R 的gsub
也可以。
确切的正则表达式取决于您要执行的操作。 您可以只删除您在问题中提供的那些特定字符,但删除所有标点符号要容易得多。
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")
(基本的 R 等效项是gsub("[[:punct:]]", " ", x)
。)
另一种方法是换出所有非字母数字字符。
str_replace_all(x, "[^[:alnum:]]", " ")
请注意,构成字母、数字或标点符号的定义会因您所在的地区而略有不同,因此您可能需要进行一些试验才能准确获得所需的内容。
不要使用正则表达式来删除那些“疯狂”的字符,只需将它们转换为 ASCII,这将删除重音,但会保留字母。
astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')
这导致
[1] "Abcdeacoauu"
将特殊字符转换为撇号,
Data <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)
下面的代码删除额外的'''撇号
Data <- gsub("''","" , Data ,ignore.case = TRUE)
使用gsub(..)
函数将特殊字符替换为撇号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.