2015-04-18 44 views
4

我有一個很大的csv文件,我想獲取它中的所有值,這些值存儲在我知道名稱的特定列中。提取.csv文件的列並找到它們的索引

不知怎的,我不明白它是如何做到這一點,但我想我靠近:(

import codecs 
import csv 
import json 
import pprint 
import re 


FIELDS = ["name", "timeZone_label", "utcOffset", "homepage","governmentType_label", "isPartOf_label", "areaCode", "populationTotal", 
     "elevation", "maximumElevation", "minimumElevation", "populationDensity", "wgs84_pos#lat", "wgs84_pos#long", 
     "areaLand", "areaMetro", "areaUrban"] 

index=[] 

with open('/Users/stephan/Desktop/cities.csv', "r") as f: 
    mycsv=csv.reader(f) 
    results=[] 
    headers=None 
    for row in mycsv: 
     for i, col in enumerate(row): 
      if col in FIELDS: 
       index.append(i) 
     print row[i]  
print index    

我的目錄索引,是正確的,我認爲,給我正確的價值觀(列索引)

我有什麼要添加到我的代碼,使其工作

回答

2
import csv 

with open('/Users/stephan/Desktop/cities.csv', "r") as f: 
    mycsv = csv.DictReader(f) 
    for row in mycsv: 
     for col in FIELDS: 
      try: 
       print(row[col]) 
      except KeyError: 
       pass 
+0

我很抱歉..我是編程新手,能否有人詳細說明構建給我,「試試」,然後Keyerror? –

+0

row [col] - row是字典,col是字典中的關鍵字。如果col未在FIELDS行中顯示[col]引發KeyError。除KeyError外的語句:通過避免此錯誤的引發。 – mmachine

+0

總是給我一個縮進錯誤,在KeyError部分:( –

0

如果您正在尋找在FIELDS這些列打印出所有的值,你想要做的是:

for row in mycsv: 
    for i, col in enumerate(row): 
     # If this is the header row entry for one of the columns we want, save its index value 
     if col in FIELDS: 
      index.append(i) 
     # If this is one of the columns in FIELDS, print its value 
     elif i in index: 
      print col 
+0

給我一個無效的語法在「elif」我使用Python 2.7? –

+0

發佈你的整個代碼,我會告訴你什麼是錯的 – Stewart

相關問題