只删除单词而不是数字的标点符号

我正在使用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 日创建


以上是只删除单词而不是数字的标点符号的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>