使用 Python 将 Excel 转换为 JSON,如何根据需要格式化这些数据?
Posted
技术标签:
【中文标题】使用 Python 将 Excel 转换为 JSON,如何根据需要格式化这些数据?【英文标题】:Excel to JSON using Python, how do I format this data to my needs? 【发布时间】:2020-12-08 10:01:30 【问题描述】:所以我想读取一个excel文件并使用python将数据提取到一个JSON文件中。
excel数据格式如下:
Header 1 | Header 2 | Header 3
x00 x01 x02
x10 x11 x12
. . .
. . .
现在我已经成功地完成了大部分编码,我认为以下是正确的。但是我确实需要以非常特定的格式获取 json 输出,这就是为什么我使用 data[i]
行import json
import pandas as pd
df = pd.read_excel (r'C:\Users\ezammit\Documents\Python Scripts\FILE.xlsx', sheet_name='sheet_1')
#initialize data
data=[0 for i in range(len(df) - 1)]
for i in range(len(df) - 1):
data[i] = r'"'+str(df.columns.values[0])+'": "' +str(df.loc[i][0])+'", '+str(df.columns.values[1])+'": "' +str(df.loc[i][1])+'", '+str(df.columns.values[2])+'": "' +str(df.loc[i][2])+'"'
with open('Savedwork.json', 'w') as json_file:
json.dump(data, json_file)
正如我所提到的,我真的很想在 JSON 文件中得到一个特定的格式,它应该完全如下:
"Header1":"data[0][0]", "Header2":"data[0][1]", "Header3":"data[0][2]",
"Header1":"data[1][0]", "Header2":"data[1][1]", "Header3":"data[1][2]",
"Header1":"data[2][0]", "Header2":"data[2][1]", "Header3":"data[2][2]",
...
任何帮助将不胜感激
【问题讨论】:
【参考方案1】:您可以创建一个 python 字典,然后让 Python 将其转换为 JSON 字符串并将其存储在一个文件中,而不是自己“创建”JSON。
第一个错误是当您将len(df)-1
传递给range
函数时。 range 函数会自动到达passedValue-1
,因此您只需传递它len(df)
。
在循环内部创建一个dict
而不是一个字符串。这是为您修改的代码:
import json
import pandas as pd
df = pd.read_excel (r'D:\example.xlsx', sheet_name='Sheet1')
#initialize data
data=[0 for i in range(len(df))]
for i in range(len(df)):
# data[i] = r'"'+str(df.columns.values[0])+'": "' +str(df.loc[i][0])+'", '+str(df.columns.values[1])+'": "' +str(df.loc[i][1])+'", '+str(df.columns.values[2])+'": "' +str(df.loc[i][2])+'"'
data[i] = str(df.columns.values[0]) : str(df.loc[i][0]), str(df.columns.values[1]): str(df.loc[i][1]), str(df.columns.values[2]): str(df.loc[i][2])
output_lines = [json.dumps(line)+",\n" for line in data]
output_lines[-1] = output_lines[-1][:-2] # remove ",\n" from last line
with open('Savedwork.json', 'w') as json_file:
json_file.writelines(output_lines)
这里是示例 Excel 文件的链接,我使用的是:Sample XLSX
这是代码的示例输出:
"Header1": "1", "Header2": "2", "Header3": "3",
"Header1": "6", "Header2": "5", "Header3": "4",
"Header1": "7", "Header2": "8", "Header3": "9"
【讨论】:
是的,当然,字典是个好主意,感谢您的建议。我已经运行了修改,我唯一需要解决的就是在查看 json 文件时在每一行之后换行。是否有可能避免出现数组外部 [ ]? @Rallad 我已将代码和输出更新为完全符合您的要求以上是关于使用 Python 将 Excel 转换为 JSON,如何根据需要格式化这些数据?的主要内容,如果未能解决你的问题,请参考以下文章
unotools - 尝试使用 python 将 ods 或 excel 文件转换为 csv
使用 python 将 Excel 中的按列 JSON 数据转换为层次结构
使用 Python 将 Excel 转换为 JSON,如何根据需要格式化这些数据?
使用python将文本文件转换为excel文件(制表符分隔)