如何在给定的前提条件下仅删除某些字符
Posted
技术标签:
【中文标题】如何在给定的前提条件下仅删除某些字符【英文标题】:How to remove only certain characters with a pre condition given 【发布时间】:2021-12-09 09:20:54 【问题描述】:我正在尝试使用 Python 从字符串列表中删除特定字符。
我的字符串是这样的:
<p><a href="first/Fruit-Shop-One.html">Fruit-Shop-One</a></p>
<p><a href="first/Fruit-Shop-Two.html">Fruit-Shop-Two</a></p>
我想要的是在不破坏链接的情况下删除“-”。所以最终的结果一定是这样的:
<p><a href="first/Fruit-Shop-One.html">Fruit Shop One</a></p>
<p><a href="first/Fruit-Shop-Two.html">Fruit Shop Two</a></p>
【问题讨论】:
请使用tour、阅读what's on-topic here、How to Ask和question checklist,并提供minimal reproducible example。 “为我实现此功能”与此站点无关,因为 SO 不是免费的在线编码服务。你必须诚实地尝试,然后就你的算法或技术提出一个具体问题。 【参考方案1】:这是一种快速而肮脏的方法,通过拆分字符串并稍后将它们连接在一起。
strings = ['<p><a href="first/Fruit-Shop-One.html">Fruit-Shop-One</a></p>', '<p><a href="first/Fruit-Shop-Two.html">Fruit-Shop-Two</a></p>']
for string in strings:
new_string = string.split('">')[0] + '">' + string.split('">')[1].replace("-", " ")
输出:
<p><a href="first/Fruit-Shop-One.html">Fruit Shop One</a></p>
<p><a href="first/Fruit-Shop-Two.html">Fruit Shop Two</a></p>
或者在列表理解中
new_strings = [string.split('">')[0] + '">' + string.split('">')[1].replace("-", " ") for string in strings]
输出:
['<p><a href="first/Fruit-Shop-One.html">Fruit Shop One</a></p>', '<p><a href="first/Fruit-Shop-Two.html">Fruit Shop Two</a></p>']
【讨论】:
【参考方案2】:from bs4 import BeautifulSoup
string_one = '<p><a href="first/Fruit-Shop-One.html">Fruit-Shop-One</a></p>'
soup = BeautifulSoup(string_one, "html.parser")
for a in soup.findAll('a'):
a.string = a.string.replace('-', ' ')
new_string = str(soup)
print(soup)
# <p><a href="first/Fruit-Shop-One.html">Fruit Shop One</a></p>
【讨论】:
这应该适用于一大串 html 中的所有“a href”链接。以上是关于如何在给定的前提条件下仅删除某些字符的主要内容,如果未能解决你的问题,请参考以下文章