Using Python CSV and glob to find matching strings and print row
我有数百个csv文件,我正在尝试编写一个python脚本,它将解析所有这些文件并打印出具有匹配字符串的行。如果我们能用一个字符串(而不是一个字符串列表)来实现这一点,我会很高兴的。使用python 2.7.5。到目前为止,我发现:
python中的csv模块将使用特定列(左边第八列)中的匹配字符串打印行:
1 2 3 4 5 6 | import csv reader = csv.reader(open('2015-08-25.csv')) for row in reader: col8 = str(row[8]) if col8 == '36862210': print row |
所以上面的内容适用于一个.csv文件。现在我需要用glob解析数百个.csv文件。glob模块将用此代码打印出所有文件名:
1 2 3 | import glob for name in glob.glob('20??-??-??.csv'): print name |
我尝试将这两个脚本放在一起,但错误消息是:
File"test7.py", line 6, in
reader = csv.reader(open(csvfiles))
TypeError: coercing to Unicode: need string or buffer, list found
1 2 3 4 5 6 7 8 9 10 | import csv import glob csvfiles = glob.glob('20??-??-??.csv') for filename in csvfiles: reader = csv.reader(open(csvfiles)) for row in reader: col8 = str(row[8]) if col8 == '36862210': print row |
您试图打开一个列表-csvfiles是您正在迭代的列表。
改为使用它,因为open()需要一个文件名:
1 | reader = csv.reader(open(filename)) |