在python3.5中,json没有转换为csv

2024-04-24 00:59:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: csvhttpsimportcomjsongetstatussys
1条回答
网友
1楼 · 发布于 2024-04-24 00:59:10

你对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)

相关问题 更多 >