2024-05-18 17:52:16 发布
网友
我正在尝试在目录中创建一个文件列表,该列表与目录中特定.csv文件的版本相匹配。文件名为“NH[V2].csv”,范围从“NH[V2].csv”到“NH[V10].csv”
如何创建一个只接受2-10范围但不包括所有其他范围(例如“NH[V1].csv”)的列表
这是我到目前为止,但它返回一个空列表
nhlist = list(glob.glob('NH [V[2-9]].csv'))
我正在尝试将所有这些.csv文件导入到data.frame中,就像在R中一样
提前谢谢
如果你确切地知道你想要匹配的名字,也许你不需要glob来做这个工作
glob
简单的理解就可以做到:
nhlist = ['NH [V{}].csv'.format(i) for i in range(2,11) ] >>>['NH [V2].csv', 'NH [V3].csv', 'NH [V4].csv', 'NH [V5].csv', 'NH [V6].csv', 'NH [V7].csv', 'NH [V8].csv', 'NH [V9].csv', 'NH [V10].csv']
您可以使用^{}和正则表达式来提供文件名的筛选列表,而不必纠结于^{}模式的限制:
import os import re pattern = re.compile(r'NH \[V([2-9]|10)\]\.csv') nhlist = [filename for filename in os.listdir('.') if pattern.match(filename)]
试试这个:
list(glob.glob('NH [[]V[2-9][]].csv'))
基于this答案
但是,这仍然不能与您要求的V10匹配,因此您可以执行以下操作(假设嵌套目录中有多个V*)
list(glob.glob('NH [[]V[2-9][]].csv')) + list(glob.glob('NH [[]V10[]].csv'))
否则,如果当前目录下只有10个文件,@PRMoureu的答案更适合这个目的
如果你确切地知道你想要匹配的名字,也许你不需要
glob
来做这个工作简单的理解就可以做到:
您可以使用^{} 和正则表达式来提供文件名的筛选列表,而不必纠结于^{} 模式的限制:
试试这个:
基于this答案
但是,这仍然不能与您要求的V10匹配,因此您可以执行以下操作(假设嵌套目录中有多个V*)
否则,如果当前目录下只有10个文件,@PRMoureu的答案更适合这个目的
相关问题 更多 >
编程相关推荐