包含所有列名的CSV到Python字典?

dar*_*dog 4 python sql csv import dictionary

我仍然很擅长使用p​​ython从头开始编程,所以作为练习我虽然拿了一个我使用SQL处理的文件尝试使用Python复制功能.看来我想把我的(压缩的,zip)csv文件创建一个它的Dict(或者也许是一个dicts的词典?).当我使用dict reader时,我将第一行作为键而不是每列作为自己的键?例如

import csv, sys, zipfile
sys.argv[0] = "/home/tom/Documents/REdata/AllListing1RES.zip"
zip_file    = zipfile.ZipFile(sys.argv[0])
items_file  = zip_file.open('AllListing1RES.txt', 'rU')

for row in csv.DictReader(items_file,dialect='excel'):
    pass
Run Code Online (Sandbox Code Playgroud)

产量:

>>> for key in row:
        print 'key=%s, value=%s' % (key, row[key])

key=MLS_ACCT    PARCEL_ID   AREA    COUNTY  STREET_NUM  STREET_NAME CITY        ZIP STATUS  PROP_TYPE   LIST_PRICE  LIST_DATE   DOM DATE_MODIFIED   BATHS_HALF  BATHS_FULL  BEDROOMS    ACREAGE YEAR_BUILT  YEAR_BUILT_DESC OWNER_NAME  SOLD_DATE   WITHDRAWN_DATE  STATUS_DATE SUBDIVISION PENDING_DATE    SOLD_PRICE,  
value=492859    28-15-3-009-001.0000    200 JEFF    3828    ORLEANS RD  MOUNTAIN BROOK  35243   A   SFR 324900  3/3/2011    2   3/4/2011 12:04:11 AM    0   2   3   0   1968    EXIST   SPARKS          3/3/2011 11:54:56 PM    KNOLLWOOD
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找的是一个列MLS_ACCT和一个单独的一个PARCEL_ID等等,所以我可以做一些事情,如平均价格的所有项目包含KNOLLWOODSUBDIVISION字段中的另一个子部分按日期范围,销售日期等.

我知道如何用SQL做到这一点,但正如我所说,我想在这里获得一些Python技能.我最近几天一直在阅读,但还没有找到关于这种用例的任何非常简单的插图.指向所述文档的指针将不胜感激.我意识到我可以使用内存驻留SQL-lite但我的愿望是再次学习Python方法.我已经阅读了一些关于Numpy和Scipy并加载了sage但仍然找不到一些有用的插图,因为这些工具似乎专注于只有数字作为元素的数组,我需要做很多字符串匹配以及日期范围计算和比较.

最终我需要替换表中的值(因为我有脏数据),我现在通过一个包含所有脏变体的"翻译表"并为最终用途提供"干净"答案来做到这一点.

Dan*_*erz 6

你确定这是一个逗号分隔值的文件吗?看起来这些线条被制表符分隔.

如果这是正确的,请在DictReader构造函数中指定制表符分隔符.

for row in csv.DictReader(items_file, dialect='excel', delimiter='\t'):
    for key in row:
        print 'key=%s, value=%s' % (key, row[key])
Run Code Online (Sandbox Code Playgroud)

资料来源:http://docs.python.org/library/csv.html