使用Python将Excel转换为JSON,如何根据需要格式化此数据?

使用Python将Excel转换为JSON,如何根据需要格式化此数据?,python,json,excel,pandas,formatting,Python,Json,Excel,Pandas,Formatting,因此,我想读取一个excel文件,并使用python将数据提取到JSON文件中 excel数据的格式如下: Header 1 | Header 2 | Header 3 x00 x01 x02 x10 x11 x12 . . . . . . 现在,我已经成功地完成了大部分编码,我认为这是以

因此,我想读取一个excel文件,并使用python将数据提取到JSON文件中

excel数据的格式如下:

Header 1  |   Header 2   | Header 3

   x00           x01          x02
   x10           x11          x12
    .             .            .
    .             .            .
现在,我已经成功地完成了大部分编码,我认为这是以下几点。但是,我确实需要以非常特定的格式获取json输出,这就是为什么我使用该行来表示数据[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]"},
...
您可以创建一个python字典,然后让python将其转换为JSON字符串并将其存储在文件中,而不是自己“创建”JSON

第一个错误是当您将
len(df)-1
传递到
range
函数时。range函数自动运行到
passedValue-1
,因此您只需通过
len(df)

在循环内部,只需创建一个
dict
,而不是一个字符串。以下是为您修改的代码:

导入json
作为pd进口熊猫
df=pd.read\u excel(r'D:\example.xlsx',sheet\u name='Sheet1')
#初始化数据
数据=[0表示范围内的i(len(df))]
对于范围内的i(len(df)):
#数据[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
数据[i]={str(df.columns.values[0]):str(df.loc[i][0]),str(df.columns.values[1]):str(df.loc[i][2])
output_lines=[json.dumps(line)+“,\n”表示数据中的行]
输出_行[-1]=输出_行[-1][:-2]#从最后一行中删除“,\n”
将open('Savedwork.json','w')作为json_文件:
json_file.writelines(输出_行)
下面是指向示例Excel文件的链接,我使用了:

下面是代码的示例输出:

{“Header1”:“1”、“Header2”:“2”、“Header3”:“3”},
{“校长1”:“6”,“校长2”:“5”,“校长3”:“4”},
{“校长1”:“7”,“校长2”:“8”,“校长3”:“9”}

当然可以,字典是个好主意,谢谢你的建议。我已经运行了修改,在查看json文件时,我只需要在每行之后换行。有可能避免数组outer[]出现吗?@Rallad我已将代码和输出更新为完全符合您的要求