在列表中找到一个字符串并替换

时间:2018-09-19 20:07:16

标签: python list

我遇到过一些文章,这些文章演示了如何在列表中查找和替换字符串,但是我很难将搜索推广到一个字符串中。

例如

listX = ['color green', 'shape circle', 'above t']

我想查找所有以'above'开头的字符串,我已经能够使用any对列表进行一些最小的搜索,并留下以下空格'above ',但我可以不知道如何替换我发现的东西。

我尝试创建的输出将是:

['color green', 'shape circle', 'above']

我还想弄清楚如何从列表中一起删除以'above'开头的字符串。

3 个答案:

答案 0 :(得分:6)

['above' if x.startswith('above') else x for x in listX]

如果您想删除所有以'above'开头的字符串,则可以执行类似注释中提到的@JonClements的操作:

[x for x in listX if not x.startswith('above')]

或者:

from itertools import filterfalse
list(filterfalse(lambda x: x.startswith('above'), listX))

答案 1 :(得分:3)

我不确定这是否是您要找的东西,但这对我有用,它打印出来:

[“绿色”,“形状圆”,“任何您想要的”]

mod

答案 2 :(得分:1)

另一种选择:

for idx, item in enumerate(listX):
    if item.startswith('above'):
        listX[idx] = 'above'

此后,我们将有一个或多个'above',然后可以将其全部删除。

while listX.count('above') > 0:
    listX.remove('above')