【问题标题】:How to remove a href tags from a string?如何从字符串中删除href标签?
【发布时间】:2022-01-26 03:29:25
【问题描述】:

我有一些以前从网站上抓取的用户评论,我正在尝试清理文本以进行一些文本分析。我想删除文本中有几个 a href 标记。例如,查看段落中包含的部分文本:

'We had a <a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow"&gt;restaurants.com</a&gt; $25 gift certificate, so we visited this restaurant.'

我想从字符串中删除这部分:

<a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow"&gt;restaurants.com</a&gt;

我不是正则表达式方面的专家,所以到目前为止我能做的最好的事情是:

import re
re.sub(r'<a href\S+', '', mytext)

但这只会删除我想要摆脱的部分内容,如下所示:

print(mytext)
'We had a  target="_blank" rel="nofollow"&gt;restaurants.com</a&gt; $25 gift certificate, so we visited this restaurant.'

我搜索了很多解决方案,但只能找到一个 javascript 和几篇警告不要使用正则表达式解析 html 的帖子,我想这不适用于我正在处理字符串的情况。我想如果我阅读更多关于使用正则表达式的信息,我可以完成这项工作,但我正在寻找一个快速的解决方案。非常感谢任何帮助。

【问题讨论】:

  • 文本中真的有&amp;gt;而不是&gt;吗?这很奇怪...想知道为什么会逃脱,而不是 &lt;。
  • @David784 是的,没错。其他人从网站上抓取了内容,所以我不知道为什么这些字符会出现在那里。
  • 看到这个答案:You can't parse [X]HTML with regex

标签: python html regex string href


【解决方案1】:
import re
''.join(re.findall('(<a href)(.+?)(/a&gt;)', st)[0])

这适用于您的示例,如果您有多个可以使用的 href 链接:

[''.join(entry) for entry in re.findall('(<a href)(.+?)(/a&gt;)', st)]

【讨论】:

  • 谢谢!我接受这个答案,因为它帮助解决了我的问题。不过,我使用它略有不同。我刚刚使用 re.sub(r'(
【解决方案2】:

当您正在寻找快速解决方案时。只需进行基本操作并使用字符串操作即可。

input_string = 'We had a <a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow"&gt;restaurants.com</a&gt; $25 gift certificate, so we visited this restaurant.'
input_string = input_string.split('<a href')
first_part = input_string[0]
input_string = input_string[-1].split('</a&gt;')
sencond_part = input_string[-1]
new_string = first_part + sencond_part
print(new_string)  # We had a  $25 gift certificate, so we visited this restaurant.

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2015-03-24
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多