json没有在python 3.5中转换为csv

时间:2016-02-29 03:00:35

标签: python json csv

#!/usr/bin/env python

import requests
import csv
import json
import sys

s = requests.Session()

r = s.get('https://onevideo.aol.com/sessions/login?un=username&pw=password')

r.status_code

if r.status_code == 200:
    print("Logged in successfully")

else:
    print("Check username and password")

filename  = open('outputfile3.csv', 'w')
sys.stdout = filename
data = s.get('https://onevideo.aol.com/reporting/run_existing_report?report_id=102636').json()
json_input = json.load(data)
for entry in json_input:
    print(entry)

1 个答案:

答案 0 :(得分:1)

您对sys.stdout = filename的任务不是惯用语,因此很多人可能甚至都不清楚您在做什么。您似乎遇到的关键误解是Python将解释您导入csv的事实或您已打开的文件的扩展名,并在给定字典列表的情况下自动将有效行写入文件(这是什么.json被解析为)。

我将提供一个完整的例子,说明如何使用一些人为的可重复性json编写类字典数据:

jsonstr = """
    [{"field1": "property11", "field2": "property12"},
     {"field1": "property21", "field2": "property22"},
     {"field1": "property31", "field2": "property32"}]
    """

首先,仅使用标准库:

import json
import csv

data = json.loads(jsonstr)

with open('outputfile3.csv', 'w') as f:
    writer = csv.DictWriter(f, fieldnames=['field1', 'field2'])
    writer.writeheader()
    writer.writerows(data)

然后更简洁地使用熊猫:

import pandas

pandas.read_json(jsonstr).to_csv('outputfile3.csv', index=False)