如果子字符串exis,则python查找和替换列表项

2024-04-19 05:31:27 发布

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

我想替换包含某个子字符串的列表中的项。在这种情况下,包含任何形式的“NSW”(大写字母都很重要)的项目应替换为“NSW=0”。如果“新南威尔士州”的条目为“新南威尔士州500”,则为“原物”。我可以找到列表项,但不知何故我找不到列表中的位置以便我可以替换它?这是我想到的,但是我替换了所有的项目:

from __future__ import division, print_function, with_statement
my_list =["abc 123","acd 234","NSW = 500", "stuff","morestuff"]
for index, i in enumerate(my_list):
    if any("NSW" in s for s in my_list):
        print ("found")
        my_list[index]= "NSW = 0"
print (my_list)  

Tags: 项目字符串in列表forindexmy情况
3条回答

另一种解决方案: 代码:

from __future__ import division, print_function, with_statement
my_list =["abc 123","acd 234","NSW = 500", "stuff","morestuff"]
for index in xrange(len(my_list)):
    if "NSW" in my_list[index]:
        my_list[index] = "NSW = 0"

print (my_list)  

输出:

^{pr2}$

或者,您可以使用列表理解来实现以下目的:

代码:

my_list =["abc 123","acd 234","NSW = 500", "stuff","morestuff"]

print ["NSW = 0" if "NSW" in _ else _ for _ in my_list]

输出:

^{pr2}$

简单list comprehension

>>> ["NSW = 0" if "NSW" in ele else ele for ele in l]

驱动程序值:

^{pr2}$

any不会给您索引,并且它在每次迭代中始终为真。所以放下它。。。在

就个人而言,我会使用一个带有三元值的列表理解来决定保留原始数据还是替换为NSW = 0

my_list =["abc 123","acd 234","NSW = 500", "stuff","morestuff"]

result = ["NSW = 0" if "NSW" in x else x for x in my_list]

结果:

^{pr2}$

相关问题 更多 >