Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将JSON**文本**写入Excel文件?_Python_Json_Excel_Pandas_Dataframe - Fatal编程技术网

Python 如何将JSON**文本**写入Excel文件?

Python 如何将JSON**文本**写入Excel文件?,python,json,excel,pandas,dataframe,Python,Json,Excel,Pandas,Dataframe,Python中有没有办法将JSON文本写入Excel文件 通常,我会将JSON响应加载到Pandas dataframe中,并将dataframe写入Excel: import pandas form pandas.io.json import json_normalize import requests def df_to_excel(df, filename): writer = pandas.ExcelWriter(filename) df.to_excel(writer

Python中有没有办法将JSON文本写入Excel文件

通常,我会将JSON响应加载到Pandas dataframe中,并将dataframe写入Excel:

import pandas
form pandas.io.json import json_normalize
import requests

def df_to_excel(df, filename):
    writer = pandas.ExcelWriter(filename)
    df.to_excel(writer, 'Sheet1')
    writer.save()

response = requests.get(url, params).json()
df = json_normalize(response)
df_to_excel(df, 'Response.xlsx')

但这需要将JSON文本转换为Python对象,从而将
替换为
false
替换为
false
null
替换为
None
等,我不希望这样做。

您可以先将JSON转换为字典,然后按照此处的建议转换为excel文件:


关键是使用
json.dumps()
将pythonic格式转换回json格式。例如,
json.dumps(无)
返回
'null'

我建议忘记它是JSON,把它当作一个简单的字符串,你可以很容易地将字符串写入Excel单元格。除非你想做一些更复杂的事情?你没有明确地说明输出应该是什么样子。我更喜欢在Excel中将JSON键作为列,将值作为行,因此,从另一个模块将文件加载到数据框中更容易,也更容易浏览数据。但是,您的方法将作为最后手段工作-谢谢。是否可以将JSON作为文本放入数据框中?然后,我可以轻松地将数据框写入Excel。据我所知,没有库可以帮助您做到这一点。H不过,您可以迭代字典d的键和值,并将json.dumps应用于它们,然后使用pandas.DataFrame.from_dict方法从字典中构造DataFrame。我现在正在路上,如果需要的话,我会在以后添加代码。此外,还可以添加需要转换的json文件示例,这也是我的想法。
import json
import xlsxwriter
import requests

response = requests.get(url, params)
d = json.loads(response.text)

workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()

row = 0
col = 0

for key in d.keys():
    row += 1
    worksheet.write(row, col, json.dumps(key))
    for item in d[key]:
        worksheet.write(row, col + 1, json.dumps(item))
        row += 1

workbook.close()