在python中逐行加载json时出错?

时间:2017-02-26 19:39:26

标签: python json

这是我的json文件格式,

[{
"name": "",
"official_name_en": "Channel Islands",
"official_name_fr": "Îles Anglo-Normandes",
}, and so on......

加载文件中的上述json时出现此错误,

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:

这是我的python代码,

import json

data = []
with open('file') as f:
    for line in f:
        data.append(json.loads(line))

4 个答案:

答案 0 :(得分:2)

JSON中不允许

[0] => Andrey:Makarov:525359:east::57.9318:33.2573:31591:424:1 [1] => John:Smith:752351:east::56.7318:23.6373:37491:424:1(根据给出的数据,我猜这是问题所在。)

答案 1 :(得分:1)

您似乎一次处理整行文件。为什么不简单地使用.read()一次获取整个内容,然后将其提供给json?

with open('file') as f:
    contents = f.read()
    data = json.loads(contents)

更好的是,为什么不使用json.load()直接传递可读性并让它处理啜食?

with open('file') as f:
    data = json.load(f)

答案 2 :(得分:0)

问题在于您逐行读取和解码文件。文件中的任何一行(例如"[{")都不是有效的JSON表达式。

答案 3 :(得分:0)

您的个别行无效JSON。例如,第一行' [{'本身并不是有效的JSON。如果您的整个文件实际上是有效的JSON并且您想要单独的行,请首先加载整个JSON,然后浏览python词典。

import json

data = json.loads(open('file').read()) # this should be a list
for list_item in data:
    print(list_item['name'])