我想了解如何修改列表的内容,具体来说就是通过
os.listdir()
返回的文件名。
这些文件名由若干重复的名称组成,然后是下划线、后缀和文件扩展名。我想把列表中的元素削减到文件名的第一部分,也就是在'_'
前面的部分:
apple_d.jpg
apple_si.jpg
apple_sg.jpg
在列表中,'apple'
只是一个单独的条目。
我可以通过去除重复项并重新按字母顺序排列来完成此操作。
list(sorted(set(t)))
但是删除下划线及其后面的内容比较麻烦。我尝试通过 .rpartition("_")[0]
来实现这一点,但是对于列表来说似乎不起作用。因此,我想知道怎么做?
编辑:嗯,在这里不起作用。仍然会出现重复项,没有分割。
objects = os.listdir(dir)
for object in objects:
sorted(set(object.split('_', 1)[0]))
cmds.menuItem(label = object, parent = "objectMenu")
(最后一个命令是Maya命令,用于填充选项菜单)。现在很累,所以我得稍后再处理。但非常感谢迄今为止的帮助。一定很快就能解决这个问题。
os.path.commonprefix
...但它似乎接近你想要的,所以我在这里提一下。 - mgilsoncommonprefix
适用于路径组件(因此由os.sep
分隔),而不是文件名。 - Martijn Pieterscommonprefix
的工作原理... - Martijn Pieters_
?如果有多个下划线,应该在第一个还是最后一个下划线处进行分割? - Martijn Pieters