代码的逻辑有几个问题.
ss = s.read()
将整个文件读入单个字符串.下一行
for line in ss:
迭代遍历该字符串中的每个字符.所以在每个循环线上都是一个字符.在
line = ss[7:]
您将获得除前7个字符(在0到6位置之外)的整个文件内容,并用该替换先前的行内容.然后
T.append(json.loads(line))
尝试将其转换为JSON并将结果对象存储到T列表中.
这里有一些代码可以满足您的需求.我们不需要将整个文件读入带有.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)
产量
{'color': '33ef', 'age': '55', 'gender': 'm'}
{'color': '3444', 'age': '56', 'gender': 'f'}
{'color': '3999', 'age': '70', 'gender': 'm'}
我们可以通过在列表解析中构建表列表来使其更紧凑:
import json
with open('simple.json', 'r') as f:
table = [json.loads(line[7:]) for line in f]
for row in table:
print(row)