使用R语言从文本中去除标点符号

23

我需要从文本中删除标点符号。我正在使用tm包,但问题是:

比如:文本内容如下:

data <- "I am a, new comer","to r,"please help","me:out","here"

现在当我运行时

library(tm)
data<-removePunctuation(data)

我的代码输出结果是:

I am a new comerto rplease helpmeouthere 

但是我期望的是:

I am a new comer to r please help me out here

8
这段代码"data<-"I am a, new comer","to r,"please help","me:out","here""在R语言中是无效的语法,能否让它可复制(reproducible)?你是使用c()函数并将这几个字符串放在一起吗?还是这只是一个长字符串(根据你想要的输出推断)。无论哪种情况,你可以尝试使用类似于gsub("[[:punct:]]", " ", data)的方法。 - David Arenburg
2个回答

48

这是我对你的问题的理解,以及与上面评论中的@David Arenburg非常接近的答案。

 data <- '"I am a, new comer","to r,"please help","me:out","here"'
 gsub('[[:punct:] ]+',' ',data)
 [1] " I am a new comer to r please help me out here "

在 [:punct:] 后面的额外空格是为了向字符串添加空格,加号符号+匹配正则表达式中一个或多个连续的项。这种做法有一个副作用,在某些情况下是可取的,它将任何一系列的空格缩短为单个空格。


3
gsub("[[:punct:][:blank:]]+", " ", data) 更为恰当。 - Avinash Raj
4
@AvinashRaj,同意。我试着记住那句关于不使用正则表达式的告诫:“首先你有一个问题,然后你写一个正则表达式,接着你就有两个问题了。”对于初学者来说,正则表达式可能会让人深陷兔子洞。OP是想要移除制表符吗?很可能是这样。 - PeterK
1
@AvinashRaj 我也在做同样的事情,它起作用了,谢谢。 - SHRUTAYU Kale

0
如果你有类似这样的东西:
string <- "hello,you"
> string
[1] "hello,you"

你可以这样做:
> gsub(",", "", string)
[1] "helloyou"

它将变量中名为string的","替换为""


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接