我遇到过一些文章,这些文章演示了如何在列表中查找和替换字符串,但是我很难将搜索推广到一个字符串中。
例如
listX = ['color green', 'shape circle', 'above t']
我想查找所有以'above'开头的字符串,我已经能够使用any
对列表进行一些最小的搜索,并留下以下空格'above '
,但我可以不知道如何替换我发现的东西。
我尝试创建的输出将是:
['color green', 'shape circle', 'above']
我还想弄清楚如何从列表中一起删除以'above'开头的字符串。
答案 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')