如何从字符串中删除 href 标签?

How to remove a href tags from a string?

我有一些以前从网站上抓取的用户评论,我正在尝试清理文本以进行一些文本分析。我想删除文本中的几个 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;  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;  gift certificate, so we visited this restaurant.'

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

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

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;  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   gift certificate, so we visited this restaurant.
import re
''.join(re.findall('(<a href)(.+?)(/a&gt;)', st)[0])

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

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