如何在给定的前提条件下仅删除某些字符

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”链接。

以上是关于如何在给定的前提条件下仅删除某些字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在android数据库中显示表创建日期以及如何根据日期的某些条件删除该表?

如何使用相同的Python代码块处理异常和特定条件

如何根据 ggplot2 中的某些条件删除标签?

如何在java中删除字符串的某些字母的所有字符

如何有条件地删除 R 中 write.csv 中的双引号

如何使用 Pandas 的条件删除数据框中的某些行? [复制]