首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换列表中的字符串python

替换列表中的字符串python
EN

Stack Overflow用户
提问于 2018-09-23 03:40:04
回答 4查看 8K关注 0票数 1

我有一份清单,其中有三个单独的清单:

代码语言:javascript
复制
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‘改为’托德格利‘。我目前的尝试是:

代码语言:javascript
复制
master_list = [James,Ben,Chris]

for owner in master_list:
    owner = [word.replace(' II','') for word in owner]

print(master_list[1])

但我得到的输出是:

代码语言:javascript
复制
['Todd Gurley II', 'Royce Freeman', 'Larry Fitzgerald', 'Cooper Kupp', 'Benjamin Watson', 'Robby Anderson']
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-23 03:53:48

在外层for循环中,可以更新owner变量的副本,但不要在列表中替换它。您可以将更新的owner变量添加到新列表中:

代码语言:javascript
复制
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

代码语言:javascript
复制
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']
票数 1
EN

Stack Overflow用户

发布于 2018-09-23 03:46:49

您可以使用re

代码语言:javascript
复制
import re
print([re.sub('\sII$', '', i) for i in master_list[1]])

输出:

代码语言:javascript
复制
['Todd Gurley', 'Royce Freeman', 'Larry Fitzgerald', 'Cooper Kupp', 'Benjamin Watson', 'Robby Anderson']
票数 2
EN

Stack Overflow用户

发布于 2018-09-23 03:54:49

当您调用owner = [word.replace(' II','') for word in owner]时,您不是在更新master_list;而是在修改它的一个元素的副本。

您可以通过发出以下调用来循环和更新master_list

代码语言:javascript
复制
master_list[1] = [word.replace(' II','') for word in owner]

或者您可以引用一个新数组:

代码语言:javascript
复制
new_master_list = []
for owner in master_list:
    new_master_list.append([word.replace(' II', '') for word in owner])

print(new_master_list[1])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52462764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档