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

时间:2018-09-04 12:09:53

标签: python python-2.7 list split list-manipulation

我是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) 

我只想获取带有dcd扩展名且被索引为[5]的名称,并创建一个新列表或对该列表进行变异,但是我不确定该怎么做。

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

这就是我希望的样子,但是经过排序且没有eq *文件。 want this sorted

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

因此可行。我刚刚添加了del filename1 [:5]以摆脱其他不必要的字符串部分     导入os,glob     list1 =已排序(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

答案 2 :(得分:0)

您的排序功能应用于文件名部分。这不是您想要的。据我了解,您想对文件名列表进行排序,而不是对文件名的各个部分进行排序。

让·弗朗索瓦(JeanFrançois)给出的代码很棒,但我想您想使自己的代码生效。

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

拆分将返回字符串列表。每个项目都是原始文件的一部分。

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

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

希望这会有所帮助!