Skip to main content
 首页 » 编程设计

python之编辑字符串列表中的项目

2025年05月04日20del

场景:我有一个包含多个文件名的字符串列表。我正在尝试创建一个仅包含每个名称的一部分的新列表,或者将原始列表编辑为仅包含我想要的部分。例如:

原始列表第一项:

"iteration5_test1_part1.txt" 

想要的结果:

"iteration5" 

(基本上我只想保留第一个下划线之前的内容)

虽然我读到这里How to modify list entries during for loop?编辑列表不是一个好习惯,我不知道还有其他方法可以做到这一点,所以我正在尝试:

mypath = "/DGMS/Destop/uploaded" 
from os import listdir 
from os.path import isfile, join 
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] 
 
for f in onlyfiles: 
    f = f.split("_") 
    f = f[0] 

但不幸的是,这并没有以想要的方式更改列表。

问题:我做错了什么?

请您参考如下方法:

for 循环将名称 f 绑定(bind)到列表中的各个字符串,然后您的循环体只是重新绑定(bind)名称。这根本不会影响列表,它只是将名称绑定(bind)到您创建的新字符串,然后在进入下一个循环迭代之前丢弃它。我推荐阅读 this article by Ned Batchelder更深入地解释 Python 名称和赋值的工作原理。

最简单的解决方案是改用列表推导式:

onlyfiles = [name.split("_")[0] for name in onlyfiles]