2011-07-27 9 views
1

正規表現を使用せずにPythonを使用してcsvファイルの特定のフィールドの値を照合する簡単な方法はありますか?テキストを含むCSVファイル内にフィールドがあります。私はfile.csvというファイルにテキスト 'eagle'を含むすべてのフィールドに処理を行うpythonスクリプトを書いています。例えばPythonを使ってcsvファイルの値を照合する簡単な方法はありますか?

import csv 

with open('file.csv', mode='r') as infile: 
    reader = csv.reader(infile) 
     for row in reader: 
      match = row[3] 
      if match == 'eagle': 
       DO STUFF 

上記のコードは動作しません。文字列 'eagle'に一致するすべての行[3]の値でSTUFFを実行するにはどうすればよいですか?助けてくれてありがとう!

EDIT: ここにI [3]ライン1と4から行と一致したい 'file.csvになり'

tree,rock,10000,eagle 
plant,stone,500,owl 
seed,boulder,7000,crane 
fruit,pebble,60000000,hawk 

からのいくつかの例線で、次にものを行います。

+3

貼り付けたコードについて正確には何が働いていませんか? – Amber

+0

私のコードではエラーは発生しません。私のコードのこのセクションは単に実行されません。行[3]は行の最後にあります。 – drbunsen

+0

また、一致したい文字列 'eagle'が行[3]内の唯一のテキストです。 – drbunsen

答えて

1

それは私のマシン上で動作します。

bash-4.1$ cat > file.csv 
tree,rock,10000,eagle 
plant,stone,500,owl 
seed,boulder,7000,crane 
fruit,pebble,60000000,hawk 
bash-4.1$ python 
Python 2.7 (r27:82500, Sep 16 2010, 18:03:06) 
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import csv 
>>> 
>>> with open('file.csv', mode='r') as infile: 
...  reader = csv.reader(infile) 
...  for row in reader: 
...   match = row[3] 
...   if match == 'eagle': 
...    print(repr(match)) 
... 
'eagle' 
+0

それはまた私のために働く。 'repr(row [3])'を表示して実際の内容を調べてみてください。 – MRAB

関連する問題