我找不到任何答案(
我已经从网上解析了json,这个语法{“a”:1,“b”:2,“c”:3}并将其转换为dictonary。
url = 'some.url/1'
data = requests.get(url=url)
binary = data.content
output = json.loads(binary)
我有定期的dictonary。 现在我需要在csv文件中写入“a”和“c”,但最困难的问题是我必须对此函数进行多次迭代,即从some.url / 1到some.url / 100,以及所有输出数据必须在一个文件中,我该怎么做?
非常感谢
答案 0 :(得分:2)
使用DictWriter,假设所有文档都具有一致的结构:
import csv
import requests
with open('outfile.csv', 'wb') as outfile:
fieldnames = ['a', 'b', 'c']
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
# write the headers, optionally
writer.writeheader()
for i in range(1, 101):
# do you stuff to fetch data
url = 'some.url/%i' % i
data = requests.get(url=url)
binary = data.content
output = json.loads(binary)
# now write
writer.writerow(output)
答案 1 :(得分:1)
我将发布一个你保留json的例子:
import random
import json
output = {}
for url in ["url1","url2"]:
r = {"a" : random.randint(1,10), "b" : random.randint(1,10), "c" : random.randint(1,10)}
del r["c"]
output[url] = r
json.dumps(output)
#with open("output.json","w") as f:
# f.write(json.dumps(output))
返回
'{"url1": {"a": 10, "b": 4}, "url2": {"a": 6, "b": 7}}'
这可以加载到pandas数据帧中:
import pandas as pd
df = pd.read_json("output.json").T
print(df)
a b
url1 10 6
url2 10 5
从这里你可以做各种操作......
答案 2 :(得分:0)
使用从1到100的循环。将循环变量附加到URL,获取JSON,解析它,并将您想要的内容写入CSV。
with open('output.csv', 'w') as f:
csvfile = csv.writer(f)
for i in range(1, 101):
url = 'some.url/' + str(i)
data = requests.get(url=url)
output = json.loads(data.content)
csvfile.writerow([output['a'], output['c']])