我正在点击一个链接并获得每次点击的json文件。然后我将数据写入文本文件。但是当我想再读一遍时,我想把它读成字典。我怎么能这样做。
def url_seq(limit=5):
for i in range(limit):
link = 'http:...x={}'.format(i)
yield link
def json_seq(link):
for text in link:
with urllib.request.urlopen(text) as url:
data = json.loads(url.read().decode())
yield data['data']
open('data.txt', 'w').close()
for item in json_seq(url_seq(limit=100)):
with open('data.txt', 'a') as f:
json.dump(item, f)
f.write(',')
输出文件是这样的,
{'x': 0.0, 'y': -7.462079426179981},{'x': 1.0, 'y':-5.300602624446985},{'x': 2.0, 'y': 1.4418651159990272}, ... ,
但我想把它读成字典。这样我就可以把它们放到熊猫数据框中进行分析了。
下面的代码给了我一个列表,有没有办法把它读到字典中。我是Python的新手,对不起,如果我的意思是非pythonic的东西。提前谢谢。
f = open('data.txt', 'r')
lines = f.read().split(',')
答案 0 :(得分:1)
我建议将所有单个数据项放在一个列表中,并将 保存为JSON文件。
data = [x for x in json_seq(url_seq(limit=100))]
with open('data.json', 'w') as f:
json.dump(data, f)
稍后,您可以使用pd.read_json
阅读JSON文件:
df = pd.read_json('data.json')
如果您真的想节省内存,请在item
次写入之间添加左右括号。
with open('data.json', 'w') as f:
f.write('[')
for item in json_seq(url_seq(limit=100)):
f.write(json.dumps(item) + ',')
f.write(']')