我必须在包含文本的列的1000行中使用gsub函数。我想在每一行中删除出现在“ said:”和“ click to expand ...”之间的所有单词,因为它们只是上一条推文的副本。我试图gsub
用来完成我的任务
content2<-as.data.frame(gsub(".*said:(.*?)expand.... *", " ", content2$txt,fixed=TRUE),stringsAsFactors = FALSE);
但是,它仅删除“ said:”并扩展。在content2
100观察1个可变数据帧的,我必须做任务的每一行。在wiktor回应之后,我试图查看他所写的那行是否有效。我仍然可以看到说:并单击以展开...。在第35行中,wiktor的代码仅适用于我猜的第一行(无论如何,该行不包含要删除的行)。我尝试使用apply失败,如下所示将其应用于每一行,b3esside太慢,这给了我另一个错误:
ops<-apply(content2,1,gsub("(said:).*?(click to expand\\.{3})", "\\1 \\2", content2,fixed=TRUE))
只是浏览了重复的帖子,它并没有回答我的问题,这是:如果我想替换模式之间的所有字符,该说“我想替换”“:”和“单击以展开”之间的所有字符串,该怎么办? 100X1数据帧的所有行。所有行都包含一组字符串,并且输出应为尺寸为100X1的数据框:ops<-gsub("(said:).*?(click to expand\\.{3})", "\\1 \\2", test)
@WiktorStribiżew谢谢,它似乎只能工作,我也想删除“ said:”和“单击以展开...”。我制作了以下可复制的代码,您可以看到“ said:”和“单击以展开...”不是被删除。
test<-as.data.frame(c("he said: i wanna be a rockstar click to expand....ok great but how you gonna do it",
"rockstar said: so how you gonna do it click to expand.... we are wanna be a big rockstar, hang out in collest bar vip with movie star"),stringsAsFactors=FALSE)
ops<-lapply(test, gsub, pattern = '(said:).*?(click to expand\\.{3})', replacement ="\\1 \\2", perl=TRUE)
ops<-as.data.frame(ops,stringsAsFactors = FALSE)
要删除数据帧中所有列中从said:
最左边到最左边的所有子字符串,click to expand...
可以使用
content2[] <- lapply(content2, gsub, pattern = '(?s)said:.*?click to expand\\.{3}', replacement =" ", perl=TRUE)
PCRE正则表达式(请注意perl=TRUE
启用了PCRE引擎)匹配:
(?s)
-启用.
匹配换行符(默认情况下不启用)said:
-字符串(要匹配整个单词,请\b
在前面添加).*?
-任意0个以上的字符,尽可能少click to expand\.{3}
-click to expand...
子字符串(\.{3}
与.
char三次匹配)。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句