【发布时间】:2017-05-16 22:20:36
【问题描述】:
在Parsing values from a JSON file using Python? 的帮助下,我能够使用以下方法读取数据:
with open('data/data.json') as data_file:
data_loaded = json.load(data_file)
但是,我无法进入要将其转换为 CSV 文件的下一步。示例代码:
import pandas as pd
import json
from io import StringIO
import io
import csv
import sys
sample = {'Table': [{'AA12_Requestor_0': 'John Doe',
'AA28_Requestor Business Unit_0': 'Manchester United',
'AA29_Target Remediation Date_0': '2017-07-01',
'AA29_Exception Lead_0': 'Ji Sung Park',
'AA29_Level 1 Approver_0': 'Phil Knight',
'AA29_Date of last WF change_0': '2017-02-12',
'AA29_Approval Cycles_0': '1',
'AA29_Level 2 Approver_0': 'Jae In Moon',
'AA29_Exception Submitted Date_0': '2015-10-12',
'AA29_Days in Awaiting Assignment_0': '0',
'AA29_Days in Awaiting Info Sec Review_0': '0',
'AA29_Days in Awaiting Governance Management Review_0': '2',
'AA29_Days in Awaiting Level 1 Review - No Level 2 Rev_0': '',
'AA29_Days from Submitted to Approved_0': '5',
'AA29_Days from Submitted to Rejected_0': '',
'AA29_Geography_0': None,
'AA29_Blood Type': 'Love',
'AA32_EX: Area_0': None,
'AA32_Impact_0': None,
'AA32_Rating_0': None,
'AA32_Rating (Number)_0': '',
'AA32_Likelihood_0': None,
'AA32_Risk Sensitivity_0': None,
'AA3_Description_0': 'Title: Get your job done | Norm: Be happy.\xa0 Love OS. | Blood type: Z',
'AA39_Record ID_0': '12345',
'AA39_Escalation Flag_0': 'No',
'AA39_Submitted Date_0': '2015-10-15',
'AA40_ID_0': '123',
'AF13_Record Workflow State': 'Canceled',
'FINDING_ID': 12345}]}
在我的 JSON 文件中有更多上述字典的迭代
我试过了:
-
参考http://blog.appliedinformaticsinc.com/how-to-parse-and-convert-json-to-csv-using-python/
json_parsed = json.loads(sample)给我一个错误,说 JSON 对象必须是字符串而不是字典。
TypeError: the JSON object must be str, bytes or bytearray, not 'dict' -
试图创建
csvwriter对象csvwriter = csv.writer(sample)给我一个错误提示:
TypeError: argument 1 must have a "write" method 我也读过How can I convert JSON to CSV?,但我无法通过第一步,即
json.loads(sample)根据Python - JSON to CSV table?
DictWriter听起来很有趣。但不知道如何将其应用到我的任务中。-
pd.read_json(sample)也期待该字符串。给出一个错误提示TypeError: Expected String or Unicode
我希望所有键都是标题(列)和行中键的所有值。
【问题讨论】:
-
为什么需要
loads/read呢?它已经加载/读取。这些东西是假设你从一个 JSON 字符串开始,而不是 Python 对象。 -
@jonrsharpe 我加载了需要转换为 csv 的实际文件。但是当我尝试进行下一步时,我使用了以下步骤: csvwriter = csv.writer(data_loaded) 它给了我一个错误,说 TypeError: argument 1 must have a "write" 方法。我的实际数据与上面的示例具有相同(错误)的 json 格式,我不知道如何在 python 中修复数据结构...
-
csv.writer需要一个 file,你为什么要传递 data?! -
@jonrsharpe 对不起新手错误。我尝试了在其他问题中可以看到的所有方法,但没有阅读所有问题的文档。
-
对我的问题投反对票的任何理由?只是这样我下次可以提出更好的格式问题
标签: json python-3.x csv data-conversion