【问题标题】:Access last string after split function to create new list在拆分函数后访问最后一个字符串以创建新列表
【发布时间】:2018-09-04 12:09:53
【问题描述】:

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

【问题讨论】:

  • filename1.sort() 正在对文件部分进行排序...你确定吗?
  • 您的预期输出是什么?不清楚。
  • 对此我很抱歉。我想在这里获取所有 dcd 文件。所以他们有 .dcd 扩展名,但第一部分不一样。所以我在想是否有办法在我拆分字符串后访问它们。哦,它正在对文件进行排序
  • 你想怎么排序?根据完整的文件路径,还是仅根据文件名?
  • 如果能按文件名排序就好了。我只是不知道该怎么做

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


【解决方案1】:

只需使用带有排序键的sortos.path.basename(仅提取文件的基本名称以执行排序):

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

【讨论】:

  • 现在它已排序但我仍然得到这个 ['1', '2.water', '298', 'FEP1', 'FEP_SYAF014-19a', 'md_1000_0000.dcd'] 和我只想要 md_* 部分
  • 我的代码应该替换你的循环,而不是在你的循环中
【解决方案2】:

所以这行得通。我刚刚添加了 del filename1[:5] 以摆脱其他不必要的字符串部分 导入操作系统,全局 list1 = sorted(glob.glob('/FEP_SYAF014/FEP1/298//.dcd'), key = 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

【讨论】:

    【解决方案3】:

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

    Jean François 提供的代码很棒,但我猜你想让自己的代码工作。

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

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

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

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2021-10-25
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多