使用python从多个文件名中提取子集

使用python从多个文件名中提取子集,python,Python,我在目录中有很多文件,名称如下: “data_2000151_avg.txt”、“data_2000251_avg.txt”、“data_2003051_avg.txt” 假设其中一个名为fname。我想从每个示例中提取一个子集,如下所示: fname.split('_')[1][:4] 结果是2000年。我想从目录中的所有文件中收集这些文件,并创建一个唯一的列表。如何操作?列出您可以使用的目录中的文件。对于生成唯一值列表,最合适的方法是 如果“唯一列表”是指唯一值的列表,则(如果文件夹包含与

我在目录中有很多文件,名称如下:

“data_2000151_avg.txt”、“data_2000251_avg.txt”、“data_2003051_avg.txt”

假设其中一个名为fname。我想从每个示例中提取一个子集,如下所示:

fname.split('_')[1][:4]

结果是2000年。我想从目录中的所有文件中收集这些文件,并创建一个唯一的列表。如何操作?

列出您可以使用的目录中的文件。对于生成唯一值列表,最合适的方法是


如果“唯一列表”是指唯一值的列表,则(如果文件夹包含与所需名称格式不匹配的文件)和“设置”的组合应起到以下作用:

from glob import glob

uniques = {fname.split('_')[1][:4] for fname in glob('data_*_avg.txt')}
# In case you really do want a list
unique_list = list(uniques)
这假定文件位于当前工作目录中。根据需要将路径附加到
glob('path/to/data.*.\u avg.txt')

您应该使用操作系统

import os
dirname = 'PathToFile'
myuniquelist = []
for d in os.listdir(dirname):
    if d.startswith('fname'):
        myuniquelist.append(d.split('_')[1][:4])
编辑:刚刚看到你关于想要一套的评论。在for循环之后添加这一行

myuniquelist = list(set(myuniquelist))

谢谢,我想要一份独特的年份清单。例如,2000不能重复两次这是一个集合,如果你愿意,你可以把它交给一个列表,只需用
list()
包装集合文字。文件本身显然以“data_”开头,fname就是变量。他说假设其中一个叫做“fname”,我读到这个问题的意思是,他把一堆文件混在一起,想找到fname的。
myuniquelist = list(set(myuniquelist))