我在编程和 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)
任何建议都会对我很有帮助!
原文由 Raffael Edu 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码逻辑存在几个问题。
将整个文件
s
读入单个字符串。下一行逐一遍历该字符串中的每个 _字符_。所以在每个循环中
line
是一个字符。在您将获得除前 7 个字符(位置 0 到 6,包括在内)之外的整个文件内容,并用它替换
line
的先前内容。然后尝试将其转换为 JSON 并将生成的对象存储到
T
列表中。这是一些可以执行您想要的操作的代码。我们不需要用 --- 将整个文件读入一个字符串,或者用
.read
.readlines
入一个行列表,我们可以简单地将文件句柄放入一个 for 循环中将逐行遍历文件。我们使用
with
语句打开文件,这样当我们退出with
块时,或者出现 IO 错误时它会自动关闭。输出
我们可以通过在列表理解中构建
table
列表来使其更紧凑: