#!/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)
答案 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)