只删除单词而不是数字的标点符号
我正在使用tmR 中的包来删除标点符号。
TextDoc <- tm_map(TextDoc, removePunctuation)
如果与字母/单词而不是数字有关,我是否可以只删除标点符号?
例如
我想要performance. --> performance
但我想要3.14 --> 3.14
我希望函数如何工作的示例:
wall, --> wall
expression. --> expression
ef. --> ef
A. --> A
name: --> name
:ok --> ok
91.8.10 --> 91.8.10
编辑:
TextDoc 是以下形式:
回答
你也可以试试这个gsub('(?<!d)[[:punct:]](?=D)?', '', text, perl = T),其中 text 是你的文本向量。正则表达式说明
(?<!d)任何数字字符的负向后视[[:punct:]]搜索标点符号(?=D)然后是任何非数字字符的正向前瞻?0 或一次- 检查这个正则表达式演示
text <- c("wall, 88.1", "expression.", "ef.", ":ok", "A.", "3.14", "91.8.10")
gsub('(?<!d)[[:punct:]](?=D)?', '', text, perl = T)
#> [1] "wall 88.1" "expression" "ef" "ok" "A"
#> [6] "3.14" "91.8.10"
long_text <- "wall, 88.1 expression. ef. :ok A. 3.14 91.8.10"
gsub('(?<!d)[[:punct:]](?=D)?', '', long_text, perl = T)
#> [1] "wall 88.1 expression ef ok A 3.14 91.8.10"
由reprex 包( v2.0.0 )于 2021 年 6 月 13 日创建