我有一份清单,其中有三个单独的清单:
James = ['Alvin Kamara','Alex Collins','Michael Thomas',
'Adam Thielen','Evan Engram','Lamar Miller']
Ben = ['Todd Gurley II','Royce Freeman','Larry Fitzgerald',
'Cooper Kupp','Benjamin Watson','Robby Anderson']
Chris = ['Dion Lewis','Rex Burkhead','Julio Jones',
'Keenan Allen','Zach Ertz','Demaryius Thomas']我想删除文本‘II',如果你在“本”列表中看,会把’托迪古利II‘改为’托德格利‘。我目前的尝试是:
master_list = [James,Ben,Chris]
for owner in master_list:
owner = [word.replace(' II','') for word in owner]
print(master_list[1])但我得到的输出是:
['Todd Gurley II', 'Royce Freeman', 'Larry Fitzgerald', 'Cooper Kupp', 'Benjamin Watson', 'Robby Anderson']发布于 2018-09-23 03:53:48
在外层for循环中,可以更新owner变量的副本,但不要在列表中替换它。您可以将更新的owner变量添加到新列表中:
new_list = []
for owner in master_list:
owner = [word.replace(' II','') for word in owner]
new_list.append(owner)
print(new_list[1])
['Todd Gurley', 'Royce Freeman', 'Larry Fitzgerald', 'Cooper Kupp', 'Benjamin Watson', 'Robby Anderson']或者,您可以在所有者列表上使用enumerate(),以便更新原来的master_list:
for i, owner in enumerate(master_list):
owner = [word.replace(' II','') for word in owner]
master_list[i] = owner
print(master_list[1])
['Todd Gurley', 'Royce Freeman', 'Larry Fitzgerald', 'Cooper Kupp', 'Benjamin Watson', 'Robby Anderson']发布于 2018-09-23 03:46:49
您可以使用re
import re
print([re.sub('\sII$', '', i) for i in master_list[1]])输出:
['Todd Gurley', 'Royce Freeman', 'Larry Fitzgerald', 'Cooper Kupp', 'Benjamin Watson', 'Robby Anderson']发布于 2018-09-23 03:54:49
当您调用owner = [word.replace(' II','') for word in owner]时,您不是在更新master_list;而是在修改它的一个元素的副本。
您可以通过发出以下调用来循环和更新master_list
master_list[1] = [word.replace(' II','') for word in owner]或者您可以引用一个新数组:
new_master_list = []
for owner in master_list:
new_master_list.append([word.replace(' II', '') for word in owner])
print(new_master_list[1])https://stackoverflow.com/questions/52462764
复制相似问题