如何从字符串中删除 href 标签?
How to remove a href tags from a string?
我有一些以前从网站上抓取的用户评论,我正在尝试清理文本以进行一些文本分析。我想删除文本中的几个 href 标签。例如,查看段落中包含的部分文本:
'We had a <a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow">restaurants.com</a> gift certificate, so we visited this restaurant.'
我想从字符串中删除这部分:
<a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow">restaurants.com</a>
我不是正则表达式方面的专家,所以到目前为止我能做的最好的是:
import re
re.sub(r'<a href\S+', '', mytext)
但这只删除了我想要删除的部分内容,如下所示:
print(mytext)
'We had a target="_blank" rel="nofollow">restaurants.com</a> gift certificate, so we visited this restaurant.'
我搜索了很多解决方案,但只能为 找到一个解决方案,还有几篇警告不要使用正则表达式解析 html 的帖子,我想这不适用于我的情况,因为我正在处理一个字符串。我想如果我阅读更多关于使用正则表达式的内容,我可以完成这项工作,但我正在寻找一个快速的解决方案。非常感谢任何帮助。
因为您正在寻找快速解决方案。只需进行基本操作并使用字符串操作即可。
input_string = 'We had a <a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow">restaurants.com</a> 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>')
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>)', st)[0])
这适用于您的示例,如果您有多个 href 链接,您可以使用:
[''.join(entry) for entry in re.findall('(<a href)(.+?)(/a>)', st)]
我有一些以前从网站上抓取的用户评论,我正在尝试清理文本以进行一些文本分析。我想删除文本中的几个 href 标签。例如,查看段落中包含的部分文本:
'We had a <a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow">restaurants.com</a> gift certificate, so we visited this restaurant.'
我想从字符串中删除这部分:
<a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow">restaurants.com</a>
我不是正则表达式方面的专家,所以到目前为止我能做的最好的是:
import re
re.sub(r'<a href\S+', '', mytext)
但这只删除了我想要删除的部分内容,如下所示:
print(mytext)
'We had a target="_blank" rel="nofollow">restaurants.com</a> gift certificate, so we visited this restaurant.'
我搜索了很多解决方案,但只能为
因为您正在寻找快速解决方案。只需进行基本操作并使用字符串操作即可。
input_string = 'We had a <a href="/redir?url=http%3A%2F%2Frestaurants.com&amp;s=8b83bf0ff8b716aae84527dc95577a310f201b166dcca25c8ca3824b15703869" target="_blank" rel="nofollow">restaurants.com</a> 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>')
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>)', st)[0])
这适用于您的示例,如果您有多个 href 链接,您可以使用:
[''.join(entry) for entry in re.findall('(<a href)(.+?)(/a>)', st)]