我正在抓一个很长的论坛帖子,我想提出一个包含以下信息的列的数据库:日期/完整帖子文本/引用用户/引用文本/干净文本
干净的文字应该是每个用户的帖子,如果他们回复任何人,则不带引号。如果帖子不是回复,我会留下NA。以下是发明用户的发明帖子,用以说明我到目前为止所做的工作:
post<-"Meow1 wrote: »\noday is gonna be the day that they're gonna throw it back to you?\nBy now you should've somehow Realized what you gotta do\n\n\nI don't believe that anybody Feels the way I do, about you now\nMeow1 wrote: »\nI'm sure you've heard it all before But you never really had a doubt\n\n\nBecause maybe, you're gonna be the one that saves me\nMeow1 wrote: »\nAnd after all, you're my wonderwall\n\n\nAnd all the lights that lead us there are blinding"
然后我尝试拉出引用的用户(Meow1)并且它可以工作:
QuotedUser_1<-ifelse(grepl('wrote:', post), gsub('\\s*wrote.*$', '', post), NA)
QuotedUser_1
[1] "Meow1"
然后我创建了这些代码来提取引用的文本和干净的文本:
Quotedtext_1<- ifelse(grepl('wrote:', post), gsub('^.*wrote\\s*|\\s*\\n\\n\\n.*$', '', post), NA)
当只有一个引用文本时它起作用,但除此之外,它只给出最后引用的位(在示例中,'毕竟,你是我的奇迹') 同样对于干净的文本,它只返回最后的回复:
Clean_text<- sub('^.*\\n\\n\\n\\s*|\\s*wrote.*', '', post)
如果有人建议改进代码,以便我可以使用所有引用的向量,以及包含所有回复的向量,我将非常感激......
干杯
答案 0 :(得分:0)
您确定无法单独删除作者和文字信息吗?如果没有源代码,很难知道,但我猜它们可以通过不同的css选择器获得,从而更容易分割数据。
如果没有,那么查看str_locate_all
可能会有所帮助,它允许您找到所有出现的情况。 “写道:”并相应地拆分字符串。