CSV到JSON脚本

Zey*_*nel 7 python csv json

我从这里拿了这个脚本:

import csv
from itertools import izip
f = open( '/django/sw2/wkw2/csvtest1.csv', 'r' )
reader = csv.reader( f )
keys = ( "firm_url", "firm_name", "first", "last", "school", "year_graduated" )
out = []
for property in reader:
    property = iter( property )
    data = {}
    for key in keys:
        data[ key ] = property.next()
    out += [ data ]
print out
Run Code Online (Sandbox Code Playgroud)

当我在IDLE中尝试它时,我收到了错误

Traceback (most recent call last):
  File "<pyshell#13>", line 5, in <module>
    data [key] = property.next()
StopIteration
Run Code Online (Sandbox Code Playgroud)

但我试过了

print out
Run Code Online (Sandbox Code Playgroud)

再次打印

[{'school': 'The George Washington University Law School', 'last': 'Abbas', 'firm_url': 'http://www.whitecase.com/aabbas', 'year_graduated': ' 2005', 'firm_name': 'White & Case', 'first': ' Amr A '}, {'school': 'Ernst Moritz Arndt University Greifswald', 'last': 'Adam', 'firm_url': 'http://www.whitecase.com/kadam', 'year_graduated': ' 2004', 'firm_name': 'White & Case', 'first': ' Karin '}, {'school': 'Tashkent State Law Institute', 'last': 'Adjivefayev', 'firm_url': 'http://www.whitecase.com/vadjivefayev', 'year_graduated': ' 2002', 'firm_name': 'White & Case', 'first': ' Vilen '}]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其作为脚本运行时,它不起作用,我得到相同的错误消息.

任何人都可以帮助修复错误?

(它输出有效的json吗?)

谢谢

编辑

谢谢你的回答.看来这不是将csv文件转换为json格式的正确方法.我只是想用它中的数据转换csv文件,以便我可以loaddata用来填充django中的sqlite3数据库.请参阅django组中的此主题:http://groups.google.com/group/django-users/browse_frm/thread/a00b529ba2147d91,以便我尝试使用csv2json.py片段.今天OS中的另一个主题(抱歉,我不能包含2个链接).我很感激将csv转换为json的简单方法.或者您用来填充我应该使用的django数据库的方法.谢谢您的帮助.

Ale*_*lli 14

将嵌套for循环更改为:

out = [dict(zip(keys, property)) for property in reader]
Run Code Online (Sandbox Code Playgroud)

并且,不,print out不会发出有效的JSON - 使用print json.dumps(out)(你import json当然也需要- 这是一个Python 2.6标准库模块,但你可以找到使用2.5的版本,如果这是你需要的).