拆分函数后访问最后一个字符串以创建新列表

Access last string after split function to create new list

我是 Python 的初学者,我一直在编写代码来访问两种类型的文件(dcd 和 inp 文件),将它们组合起来并用匹配的字符串创建一个新列表。

一开始我卡在了某个地方。我想在这里获取所有 dcd 文件。所以他们有 .dcd 扩展名,但第一部分不一样。所以我在想在我拆分字符串后是否有办法访问它们。

    #collect all dcd files into a list
list1 = []
for filename1 in glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'):
    filename1 = filename1.split('/')
    filename1.sort()    
    list1.append(filename1) 

我只想获取索引为 [5] 的带有 dcd 扩展名的名称并创建一个新列表或更改此列表,但我不确定该怎么做。

p.s 我刚刚发布了代码的第一部分 谢谢 ! the oddly sorted part this one looks better

这就是我希望它看起来的样子,但已排序且没有 eq* 文件。 want this sorted

只需将 sort 与排序键一起使用:os.path.basename(仅提取文件的基本名称以执行排序):

import os, glob
list1 = sorted(glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'), key = os.path.basename)

所以这成功了。我刚刚添加了 del filename1[:5] 来删除其他不必要的字符串部分 导入 os,glob list1 = sorted(glob.glob('/FEP_SYAF014/FEP1/298//.dcd'), 键= os.path.basename)

for filename1 in sorted(glob.glob('*/FEP_SYAF014 */FEP1/298/*/*.dcd'),key = os.path.basename):
    filename1 = filename1.split('/')

    filename1.sort()
    list1.append(filename1)
    del filename1[:5]
    print filename1

您的排序功能应用于文件名部分。这不是你想要的。如果我理解得很好,你想对文件名列表进行排序,而不是文件名的一部分。

Jean François 给出的代码很棒,但我想您希望自己的代码能够运行。

您需要仅使用拆分的最后一部分来提取文件名

A split returns 一个字符串列表。每一项都是原作的一部分。

文件名=filename.split('/')[len(filename.split('/'))-1]

这一行将为您提供拆分的最后一部分 然后您可以将该部分添加到您的列表中 毕竟你可以对你的列表进行排序

希望对您有所帮助!