【发布时间】:2014-03-02 04:36:20
【问题描述】:
我正在尝试从 JSON 文件中获取一些数据。这是它的代码 -
import csv
import json
ifile = open('facebook.csv', "rb")
reader = csv.reader(ifile)
rownum = 0
for row in reader:
try:
csvfile = open('facebook.csv', 'r')
jsonfile = open('file.json', 'r+')
fieldnames = ("USState","NOFU2008","NOFU2009","NOFU2010", "12MI%", "24MI%")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
json.dump(row, jsonfile)
jsonfile.write('\n')
data = json.load(jsonfile)
print data["USState"]
except ValueError:
continue
我在控制台上没有得到打印语句的任何输出。 JSON 格式如下
{"USState": "US State", "12MI%": "12 month increase %", "24MI%": "24 month increase %", "NOFU2010": "Number of Facebook UsersJuly 2010", "NOFU2008": "Number of Facebook usersJuly 2008", "NOFU2009": "Number of Facebook UsersJuly 2009"}
{"USState": "Alabama", "12MI%": "109.3%", "24MI%": "400.7%", "NOFU2010": "1,452,300", "NOFU2008": "290,060", "NOFU2009": "694,020"}
我想像 NOFU2008 一样访问所有行。
【问题讨论】:
-
您的 JSON 格式是否完全一致?它不是有效的 JSON。它需要在一个数组中。
-
@Shadaez - 是的,我只是在这个问题中复制粘贴了我的 JSON 文件的前两行。这是否意味着我在创建 JSON 文件时出错了?我正在从 CSV 文件中提取内容并在该 for 循环中创建一个 JSON 文件
-
是的,我会先写一个“[”,然后每当你写一行时,在新行之前添加一个“,”,除了最后一行,你只需添加一个“]” .你也想读取数组中的每个值,所以
for line in datadata["USState"] -
如果您不确定它是否正确,请将创建的 JSON 放入 jsonlint.com 并进行验证。它会告诉你出了什么问题。
-
糟糕,cmets 的意思是
line["USState"]我不熟悉 python 的 json 库,但我知道这两行的格式不正确。
标签: python json python-2.7