2015-08-25 37 views
0

我有數百個CSV文件,我正在嘗試編寫一個Python腳本來解析所有這些文件並打印出具有匹配字符串的行。如果我們能夠使用一個字符串(而不是字符串列表)來工作,我會很高興。使用Python 2.7.5。到目前爲止,我已經想通了:使用Python CSV和glob找到匹配的字符串並打印行

在Python csv模塊將打印在特定列匹配的字符串的行(左起第八列):

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模塊會打印出所有的文件名與此代碼:

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

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 

回答

0

您正在嘗試打開列表 - csvfiles是您正在迭代的列表。

使用此相反,因爲開放式()需要一個文件名:

reader = csv.reader(open(filename)) 
+0

謝謝,它的工作原理!但是,它不喜歡每個.csv文件頂部的兩個空行。我已經開始了另一篇文章http://stackoverflow.com/questions/32216221/python-csv-skip-first-two-empty-rows – adelaide01

相關問題