我从 here 中获取了这个脚本:
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
当我在 IDLE 中尝试时,我得到了错误
Traceback (most recent call last):
File "<pyshell#13>", line 5, in <module>
data [key] = property.next()
StopIteration
但是我试过了
print out
再次打印
[{'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 '}]
但是当我尝试将它作为脚本运行时,它不起作用,我收到相同的错误消息。
任何人都可以帮助修复错误吗?
(它是否输出有效的 json?)
谢谢
编辑
感谢您的回答。这似乎不是将 csv 文件转换为 json 格式的正确方法。我只是想转换其中包含数据的 csv 文件,以便我可以使用 loaddata
在 django 中填充我的 sqlite3 数据库。在 django 组中查看此线程:http://groups.google.com/group/django-users/browse_frm/thread/a00b529ba2147d91因为我尝试使用 csv2json.py 片段。今天在操作系统中还有另一个线程(抱歉,我不能包含 2 个链接)。我希望有一种将 csv 转换为 json 的简单方法。或者你用来填充我应该使用的 django 数据库的方法。感谢您的帮助。
最佳答案
将嵌套的 for
循环更改为:
out = [dict(zip(keys, property)) for property in reader]
并且,不,print out
不会发出有效的 JSON——使用 print json.dumps(out)
(您需要import json
当然也是——这是一个 Python 2.6 标准库模块,但如果您需要的话,您可以找到适用于 2.5 的版本。
关于python - CSV 到 JSON 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1884395/