当前位置: 首页 > 面试题库 >

如何使用正则表达式删除推文的主题标签,@ user,链接

轩辕啸
2023-03-14
问题内容

我需要使用Python预处理推文。现在我想知道分别删除所有标签,@ user和tweet链接的正则表达式是什么?

例如,

  1. original tweet: @peter I really love that shirt at #Macy. http://bet.ly//WjdiW4
    • 已处理的推文: I really love that shirt at Macy
  2. 原始推文: @shawn Titanic tragedy could have been prevented Economic Times: Telegraph.co.ukTitanic tragedy could have been preve... http://bet.ly/tuN2wx
    • 已处理的推文: Titanic tragedy could have been prevented Economic Times Telegraph co ukTitanic tragedy could have been preve
  3. 原始推文: I am at Starbucks http://4sh.com/samqUI (7419 3rd ave, at 75th, Brooklyn)
    • 已处理的推文: I am at Starbucks 7419 3rd ave at 75th Brooklyn

我只需要每个推文中有意义的词即可。我不需要用户名,任何链接或标点符号。


问题答案:

以下示例是一个近似的例子。不幸的是,仅通过正则表达式没有正确的方法。以下正则表达式仅去除URL(不只是http),任何标点,用户名或任何非字母数字字符。它还将单词分隔为单个空格。如果您想按预期分析推文,则系统中需要更多智能。考虑到没有标准tweet提要格式的一些认知性自我学习算法。

这是我的建议。

' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())

这是你的例子的结果

>>> x="@peter I really love that shirt at #Macy. http://bit.ly//WjdiW4"
>>> ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'I really love that shirt at Macy'
>>> x="@shawn Titanic tragedy could have been prevented Economic Times: Telegraph.co.ukTitanic tragedy could have been preve... http://bit.ly/tuN2wx"
>>> ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'Titanic tragedy could have been prevented Economic Times Telegraph co ukTitanic tragedy could have been preve'
>>> x="I am at Starbucks http://4sq.com/samqUI (7419 3rd ave, at 75th, Brooklyn) "
>>> ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'I am at Starbucks 7419 3rd ave at 75th Brooklyn'
>>>

这是一些不完美的例子

>>> x="I c RT @iamFink: @SamanthaSpice that's my excited face and my regular face. The expression never changes."
>>> ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'I c RT that s my excited face and my regular face The expression never changes'
>>> x="RT @AstrologyForYou: #Gemini recharges through regular contact with people of like mind, and social involvement that allows expression of their ideas"
>>> ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'RT Gemini recharges through regular contact with people of like mind and social involvement that allows expression of their ideas'
>>> # Though after you add # to the regex expression filter, results become a bit better
>>> ' '.join(re.sub("([@#][A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'RT recharges through regular contact with people of like mind and social involvement that allows expression of their ideas'
>>> x="New comment by diego.bosca: Re: Re: wrong regular expression? http://t.co/4KOb94ua"
>>> ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
'New comment by diego bosca Re Re wrong regular expression'
>>> #See how miserably it performed?
>>>


 类似资料:
  • 问题内容: 我正在尝试处理一堆文件,然后需要进行修改以删除文件名中的无关信息;值得注意的是,我正在尝试删除括号内的文本。例如: 我想对一整堆文件进行正则表达式,其中括号表达式可能在中间或结尾,并且长度可变。 正则表达式是什么样的?首选Perl或Python语法。 问题答案: 因此,在Python中,您可以这样做:

  • 问题内容: 我想在pastebin上将脚本标签从此html中剥离 http://pastebin.com/mdxygM0a 我尝试使用以下正则表达式 但是它不会删除html中的所有脚本标签。它仅删除嵌入式脚本。请我需要一个可以删除所有脚本标签(行内和多行)的正则表达式。如果对我的样本http://pastebin.com/mdxygM0a进行测试,将不胜感激 谢谢 问题答案: 尝试使用正则表达式删

  • 问题内容: 这是我的正则表达式,可以很好地匹配字符串中的链接。但是我不希望它选择每个链接。如果链接位于链接之前或之后,则不应对该链接进行数学计算。怎么做到呢? 这些应匹配: 这些不应该匹配: 为什么需要这个?:我希望每个链接都可以单击,即使它不在锚标记之间也是如此。 问题答案: 关于使用正则表达式解析html的所有免责声明,如果您想对这个任务使用正则表达式,则可以使用: 交替匹配的左侧 完成,然后

  • 问题内容: 我需要使用正则表达式在单词的 开头 和 结尾 处删除标点符号。似乎正则表达式将是最好的选择。我不想从“ you’re”之类的词中删除标点符号,这就是为什么我不使用.replace()的原因。 问题答案: 您不需要正则表达式即可执行此任务。使用有:

  • 通常,当我想在python中使用正则表达式删除两个字符串之间的文本时,我会这样做: 其中 是我的文本,我使用上面的代码删除 z1 和 AA 之间的所有内容(包括 和 )。但是现在我正在努力为以下方面做同样的事情: 我有下面的字符串(来自乳胶。txt文件): 我的目标是替换所有的东西,从到最后一行的最后一个。我尝试了几个正则表达式组合,如和其他组合,但没有成功…我做错了什么?

  • 问题内容: 我需要从python中的字符串中删除标签。 删除两端的整个标签而只留下“标题”的最有效方法是什么?我只看到了使用HTML标记执行此操作的方法,而这在python中对我没有用。我特别将此用于GIS程序ArcMap。它具有自己的布局元素标签,我只需要删除两个特定标题文本元素的标签。我相信正则表达式可以很好地解决此问题,但是我愿意接受任何其他建议。 问题答案: 这应该工作: 所有人都说正则表