在Python中读取具有多个对象的JSON文件

2023-11-27

我在编程和Python方面有点白痴。我知道在之前的问题中对此有很多解释,但我仔细阅读了所有这些,但没有找到解决方案。
我正在尝试读取一个包含大约 10 亿条数据的 JSON 文件,如下所示:

334465|{"color":"33ef","age":"55","gender":"m"}
334477|{"color":"3444","age":"56","gender":"f"}
334477|{"color":"3999","age":"70","gender":"m"}

我正在努力克服每行开头的 6 位数字,但我不知道如何读取多个 JSON 对象? 这是我的代码,但我找不到它为什么不起作用?

import json

T =[]
s = open('simple.json', 'r')
ss = s.read()
for line in ss:
    line = ss[7:]
    T.append(json.loads(line))
s.close()

这是我得到的错误:

ValueError: Extra Data: line 3 column 1 - line 5 column 48 (char 42 - 138)

任何建议都会对我非常有帮助!


您的代码逻辑存在几个问题。

ss = s.read()

读取整个文件s成单个字符串。下一行

for line in ss:

迭代每个特点在那根弦上,一根一根。所以在每个循环上line是单个字符。在

    line = ss[7:]

您将获取除前 7 个字符(位置 0 到 6,含)之外的整个文件内容,并替换以前的内容line接着就,随即。进而

T.append(json.loads(line))

尝试将其转换为 JSON 并将结果对象存储到T list.


这是一些可以实现您想要的功能的代码。我们不需要将整个文件读入字符串中.read,或进入行列表.readlines,我们可以简单地将文件句柄放入 for 循环中,该循环将逐行迭代文件。

我们使用一个with语句打开文件,这样当我们退出时它会自动关闭with块,或者是否存在 IO 错误。

import json

table = []
with open('simple.json', 'r') as f:
    for line in f:
        table.append(json.loads(line[7:]))

for row in table:
    print(row)

output

{'color': '33ef', 'age': '55', 'gender': 'm'}
{'color': '3444', 'age': '56', 'gender': 'f'}
{'color': '3999', 'age': '70', 'gender': 'm'}

我们可以通过构建来使其更加紧凑table在列表理解中列出:

import json

with open('simple.json', 'r') as f:
    table = [json.loads(line[7:]) for line in f]

for row in table:
    print(row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中读取具有多个对象的JSON文件 的相关文章

随机推荐