如何在Python中从一组字符串中移除特定的子字符串?

2024-04-26 22:53:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组字符串set1,并且set1中的所有字符串都有两个特定的子字符串,我不需要也不想删除它们。
样本输入: set1={'Apple.good','Orange.good','Pear.bad','Pear.good','Banana.bad','Potato.bad'}
所以基本上我希望从所有字符串中删除.good.bad子字符串。
我所尝试的:

for x in set1:
    x.replace('.good','')
    x.replace('.bad','')

但这似乎根本不起作用。输出完全没有变化,它和输入是一样的。我试着用for x in list(set1)代替原来的,但这并没有改变什么。


Tags: 字符串inappleforreplacelistpotatobanana
3条回答
>>> x = 'Pear.good'
>>> y = x.replace('.good','')
>>> y
'Pear'
>>> x
'Pear.good'

.replace不会更改字符串,而是返回替换字符串的副本。不能直接更改字符串,因为字符串是不可变的。

您需要从x.replace中获取返回值并将其放入一个新的集合中。

字符串是不可变的。^{}创建一个新的字符串。文件中说明了这一点:

Return a copy of string s with all occurrences of substring old replaced by new. ...

这意味着您必须重新分配或重新填充集合(使用set comprehension)重新分配更容易:

new_set = {x.replace('.good', '').replace('.bad', '') for x in set1}

你只需要一点黑色魔法!

>>> a = ["cherry.bad","pear.good", "apple.good"]
>>> a = list(map(lambda x: x.replace('.good','').replace('.bad',''),a))
>>> a
['cherry', 'pear', 'apple']

相关问题 更多 >