如何将多个JSON文件写入一个csv?

时间:2017-10-06 21:26:52

标签: python json csv

我找不到任何答案(

我已经从网上解析了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,以及所有输出数据必须在一个文件中,我该怎么做?

非常感谢

3 个答案:

答案 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']])