2015-04-18 30 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

相关问题