繁体   English   中英

使用python re.match列出csv文件

[英]listing csv files using python re.match

我在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表达式? 非常感谢。/

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

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

同样,直接遍历列表中的元素比遍历索引然后引用列表更有效。 尤其是考虑到这一点时,每次要访问ith文件时,都会一直调用os.listdir() ,这非常浪费。


这是filter的一个优雅替代品:

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

适用于python2.x和3.x。

from glob import glob

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

您可以尝试使用Python的glob模块,而不是使用正则表达式:

import glob

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM