我正在尝试在目录中创建一个文件列表,该目录匹配目录中特定的.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文件导入到一个数据中。
预先感谢。
如果您确切地知道要匹配的名称,也许您不需要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']
,而不是与glob()
模式的局限性搏斗,可以使用os.listdir()
和正则表达式提供文件名的过滤列表:
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'))
基于此答案
但是,这仍然不符合您要求的V10,因此您可以做类似的操作(假设您在嵌套目录中有多个V*)
list(glob.glob('NH [[]V[2-9][]].csv')) +
list(glob.glob('NH [[]V10[]].csv'))
在当前目录下只有10个文件 - @prmoureu的答案将更适合此目的