我想了解如何修改列表的内容,特别是已经返回的文件名os.listdir().
文件名包含许多重复的名称,后跟下划线,后缀,然后是文件扩展名.我正试图将列表中的元素剪切到文件名的第一部分,然后'_':
apple_d.jpg
apple_si.jpg
apple_sg.jpg
Run Code Online (Sandbox Code Playgroud)
变成列表中的单个条目,'apple'.
我能够摆脱重复并重新用字母表来表示
list(sorted(set(t)))
Run Code Online (Sandbox Code Playgroud)
但从下划线开始摆脱一切都证明是棘手的.我尝试过这样做.rpartition("_")[0].但这显然不适用于列表.所以我想知道如何解决这个问题?
编辑:好吧,不在这里工作.仍然有重复,没有分裂.
objects = os.listdir(dir)
for object in objects:
sorted(set(object.split('_', 1)[0]))
cmds.menuItem(label = object, parent = "objectMenu")
Run Code Online (Sandbox Code Playgroud)
(最后一个命令是maya命令,它填充选项菜单).现在很累,所以我不得不稍后再讨论.但非常感谢迄今为止的帮助.一定要尽快得到这个.
使用str.split()或str.rsplit()使用限制,然后选择第一个元素:
filename.split('_', 1)[0]
Run Code Online (Sandbox Code Playgroud)
.rsplit('_', 1)将在最后一个下划线.split()上分开,第一个.选择最适合您用途的产品.
这将为您提供该文件名的第一个或最后一个下划线之前的所有内容.
在集合理解中使用它,sorted()从该集合返回一个列表:
unique_prefixes = sorted({filename.split('_', 1)[0] for filename in os.listdir(somedir)})
Run Code Online (Sandbox Code Playgroud)
对于Python 2.6及更早版本,您还没有集合理解语法,以下生成器表达式set()也可以使用:
unique_prefixes = sorted(set(filename.split('_', 1)[0] for filename in os.listdir(somedir)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
478 次 |
| 最近记录: |