繁体   English   中英

Python 3:如何将文件json读入字典列表?

[英]Python 3: How to read file json into list of dictionary?

我有Json格式的文件:

{"uid": 2, "user": 1}
{"uid": 2, "user": 1}
{"uid": 2, "user": 1}

当我使用以下代码时,它显示一个错误:

    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 22)

with open('E:/list.txt','r') as target:
        my_list = json.load(target)

如何将我的文件内容转换成字典列表? 谢谢

您的文件是不是一个JSON ,它是一个列表JSON

with open(filec , 'r') as f:
    list = list(map(json.loads, f))

因为它不是有效的json格式,所以基本上不会加载您的内容,请尝试以下脚本:

import json

try:
    file_content = """{"uid": 2, "user": 1}
    {"uid": 2, "user": 1}
    {"uid": 2, "user": 1}"""

    json.loads(file)
except Exception as e:
    print("This is not JSON!")

print('-' * 80)
file_content = """[{"uid": 2, "user": 1},
{"uid": 2, "user": 1},
{"uid": 2, "user": 1}]"""

print(json.loads(file_content))

结果将是:

This is not JSON!
--------------------------------------------------------------------------------
[{'user': 1, 'uid': 2}, {'user': 1, 'uid': 2}, {'user': 1, 'uid': 2}]

证明如果将字典包装在方括号中并用逗号分隔项目,则json将被正确解析

当然,如果您根本不想调整文件,则可以执行以下操作来创建输出:

import json

file_content = """{"uid": 2, "user": 1}


{"uid": 2, "user": 1}


{"uid": 2, "user": 1}

"""

output = [json.loads(line)
          for line in file_content.split("\n") if line.strip() != ""]
print(output)

您必须进行迭代,因为json.load不会自动执行该操作。
所以应该有这样的东西

for line in file:
    json_obj = json.loads(line)
    my_list.append(json_obj)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM