使用python re.match列出csv文件

时间:2017-07-03 22:26:42

标签: python regex csv

我在python中创建了一个小代码,用于列出当前目录中的csv文件:

>>> for i in range(len(os.listdir())):
...     isMatch = re.search(r'\.csv$', os.listdir()[i])
...     if (isMatch):
...             print(os.listdir()[i])
...
HR_data.csv
HR_data2.csv
HR_data_WEKA.csv
WholesaleCustomersData.csv
>>>

有没有更优雅和更短的方法来做到这一点,比如使用lambda表达式??? 非常感谢./

3 个答案:

答案 0 :(得分:3)

您不需要正则表达式,glob有开销。只需使用内置的str.endswith函数:

for filename in os.listdir():
    if filename.endswith('.csv'):
        print(filename)

此外,迭代列表中的元素比迭代索引然后引用列表更有效。特别是当您考虑时,每次要访问os.listdir()文件时都会调用ith,这非常浪费。

这是filter的优雅替代方案:

for csv_files in filter(lambda x: x.endswith('.csv'), os.listdir()):
    print(csv_files)

适用于python2.x和3.x。

答案 1 :(得分:1)

from glob import glob

for f in glob('*.csv'):
    print(f)

答案 2 :(得分:1)

您可以尝试使用Python的glob模块:

,而不是使用正则表达式
import glob

files = glob.glob('*.csv')
for f in files:
    print(f)