【发布时间】:2014-07-11 17:57:19
【问题描述】:
所以我在这个帖子中找到了我的问题的大部分解决方案:Use Python to select rows with a particular range of values in one column
但是在实现代码时,我遇到了一个我无法弄清楚的错误。我正在尝试仅从花旗自行车数据中提取订阅者的数据行(此处的信息:http://www.citibikenyc.com/system-data)
代码如下:
import csv
with open("E:/Dropbox/PPS/CitiBikeData/2014_Data.csv") as input, open("E:/Dropbox/PPS/CitiBikeData/subscribers.csv", "w") as output:
reader = csv.DictReader(input, dialect="excel-tab")
fieldnames = reader.fieldnames
writer_output = csv.DictWriter(output, fieldnames, dialect="excel-tab")
writer_output.writeheader()
for row in reader:
if int(row['gender']) > 0:
writer_output.writerow(row)
这是我得到的错误:
C:\Python34\python.exe E:/Dropbox/PPS/CitiBikeData/csvfilter_2.py
Traceback (most recent call last):
File "E:/Dropbox/PPS/CitiBikeData/csvfilter_2.py", line 9, in <module>
if int(row['gender']) > 0:
KeyError: 'gender'
Process finished with exit code 1
我了解 KeyError 是什么(通过阅读此 https://wiki.python.org/moin/KeyError),但我不知道为什么会收到错误,或者如何解决它。
【问题讨论】:
-
澄清一下,我在代码中使用了性别,因为任何非订阅者都被编码为0,我认为使用整数会比字符串更好。
-
print row.keys()说什么? -
dict_keys(['tripduration,"starttime","stoptime","起始站id","起始站名","起始站纬度","起始站经度","结束站id ","终点站名称","终点站纬度","终点站经度","bikeid","usertype","出生年份","性别"'])
-
我下载的文件不是制表符分隔。你有一个键。注意键周围的单引号。