如何在不使用eval函数的情况下使用python从文件的特定行读取json数组

如何在不使用eval函数的情况下使用python从文件的特定行读取json数组,python,Python,我有一个包含json数组的文件 [ {'sector':'1','info':[{'id':'1234','pos':'55039974','risk':'low'},{'id':'3333','pos':'44530354','risk':'middle'}]}, {'sector':'2','info':[{'id':'2434','pos':'45455554','risk':'high'},{'id':'4444','pos':'4454555','risk':'high'}]}

我有一个包含json数组的文件

[
  {'sector':'1','info':[{'id':'1234','pos':'55039974','risk':'low'},{'id':'3333','pos':'44530354','risk':'middle'}]},
  {'sector':'2','info':[{'id':'2434','pos':'45455554','risk':'high'},{'id':'4444','pos':'4454555','risk':'high'}]}
]
一行

[{'sector':'1','info':[{'id':'1234','pos':'55039974','risk':'low'},{'id':'3333','pos':'44530354','risk':'middle'}]},{'sector':'2','info':[{'id':'2434','pos':'45455554','risk':'high'},{'id':'4444','pos':'4454555','risk':'high'}]}]
在一个文件中作为第2行。我如何从该文件中读取json数组的第2行并用

print(str(lines[0]['sector'][0]['id']))
??我不想使用eval函数,因为如果我使用像1E6条目的巨大数组,eval会将我的RAM增加到6Gb。这就是为什么我试图找出如何与其他函数一起读取字符串并将其转换为数组的原因。谢谢你的帮助

更新: 我试过:

更新2 阵列就是问题所在!没有[和2区]的建筑工程

{"sector":"1","info":[{"id":"1234","pos":"55039974","risk":"low"},{"id":"RS11591147x","pos":"44530354","risk":"middle"}]}
更新3-(关闭) 阵列还可以,但我必须替换每个阵列中的“to”。内存从450Mb增加到700Mb。这对6Gb来说是一个巨大的挑战。问题是txt文件将vom 30Mb增加到50Mb,但谁在乎呢?xD

whereIsMyArray = 1
with open('file.txt', 'r') as fp:
  line = fp.readlines()[whereIsMyArray].replace("'", '"')
  data = json.loads(line)
print(data[1]['info'][1]["risk"])

您可以尝试使用json库函数
json.loads

import json

with open('yourfile.txt') as f:
    s=f.readlines()[1]

result=json.loads(s)

“我怎样才能像通常从文件中读取一行一样只读取第2行呢?”“我不想使用eval函数”,你也不应该这样做;你应该用
json
标准库模块解析结果字符串,就像解析任何其他json数据一样。”因为如果我使用像1E6这样的大型阵列,我的RAM将增加到6Gb。“如果您必须一次将1e6解析的JSON片段保存在内存中,那么就无法避免内存使用。它们占用的空间与它们一样大;您的文件也一样大。现在还不清楚困难是什么,因为除了使用解析的JSON结果的部分外,您没有显示现有方法的代码。“如何将文件中的一行读取为字符串”和“如何将字符串解析为json”是两个独立的问题,最好通过搜索或直接访问文档来回答每一个问题。@karl knechtel和IoaTzimas在我的问题中看到了更新。我尝试了3种不同的版本,但没有一种版本。知道我做错了什么吗?
import json

with open('yourfile.txt') as f:
    s=f.readlines()[1]

result=json.loads(s)