【问题标题】:how to remove words with "(" in a string in r?如何在r中的字符串中删除带有“(”的单词?
【发布时间】:2015-10-09 08:09:56
【问题描述】:

我有以下字符串:

str<-c("hello(world(howr u doin")

我想从字符串中删除单词“hello(world(howr”)。我希望我的输出是

str2<-c("u doin")

我使用得到的错误

gsub("hello(world(howr","", str) 

is: 无效表达式,原因 'Missing ')''

请注意,我将在字符串的迭代中使用此函数,我们不能说“(”会出现在字符串中的哪个位置。所以,我会要求您提供一个全局解决方案。谢谢。 另外,请您注意,字符串中要删除的单词在不同时间可能会有所不同。所以我想要一个正则表达式,它告诉忽略要删除的单词中特殊字符的含义。

这是一个真实世界的情况

library(stringr)
library(NLP)
library(openNLP)
text_sa<-as.String("`$%`$> http://t.co/W9wDz8yhZE @AshramOrg @villan_TKRrength! #WeSupport_`$8`$(`$>`$$`$(_`$8`$`$8`% ")
removalwords<-c("#WeSupport_`$8`$(`$>`$$`$(_`$8`$\002`$8`%", "@AshramOrg")
for(k in 1:length(removalwords)){
text_sa <- gsub(removalwords[k], "", text_sa)
}

我的预期输出是

text_sa<-as.String("`$%`$> http://t.co/W9wDz8yhZE @villan_TKRrength!")

【问题讨论】:

  • 复制/粘贴新代码时出错Error: unexpected '&gt;' in "text_sa&lt;-as.String($%$&gt;"
  • @akrun 抱歉,我忘记在字符串中包含 "。我现在编辑了它。请重试。
  • 现在,我收到错误 Error: could not find function "as.String"
  • @请加载库(stringr)
  • @areddy 字符串 r 中不存在该函数

标签: regex r string replace gsub


【解决方案1】:

您需要转义括号,因为括号是正则表达式中的特殊字符。由于更换只会发生一次,因此您无需使用gsub。单独sub 就足够了。

sub("hello\\(world\\(howr\\s*","", str) 

sub("^\\S+\\s*", "", str)

编辑:

x <- "`$%`$> http://t.co/W9wDz8yhZE @AshramOrg @villan_TKRrength! #WeSupport_`$8`$(`$>`$$`$(_`$8`$`$8`% "
remove <- c("#WeSupport_`$8`$(`$>`$$`$(_`$8`$`$8`%", "@AshramOrg")
gsub(paste(gsub("([^\\w\\s])", "\\\\\\1", remove, perl=T),collapse="|"), "", x, perl=T)
[1] "`$%`$> http://t.co/W9wDz8yhZE  @villan_TKRrength!  "

【讨论】:

  • 请注意,我将在字符串的迭代中使用此函数,我们不能说“(”会出现在字符串中的哪个位置。所以,我请求您提供一个全局解决方案。谢谢你。另外,我会要求你注意,要在字符串中删除的单词在不同的时间可能会有所不同。所以我想要一个正则表达式,它告诉忽略单词中特殊字符的含义被删除。
  • @areddy 所以请发布一个反映您的真实情况的示例。
  • 谢谢.. 请给我一分钟
  • @areddy 你可以试试这个gsub("\\S*[^\\w\\s]\\S*", "", str)。如果它不起作用,请提供一个示例。
  • 我得到'' 作为输出。
猜你喜欢
  • 1970-01-01
  • 2013-12-15
  • 2016-01-18
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2020-02-29
  • 1970-01-01
相关资源
最近更新 更多