繁体   English   中英

Excel 到 JSON 使用 Python,我如何根据需要格式化此数据?

[英]Excel to JSON using Python, how do I format this data to my needs?

所以我想读取一个 excel 文件并使用 python 将数据提取到 JSON 文件中。

excel 数据的格式如下:

Header 1  |   Header 2   | Header 3

   x00           x01          x02
   x10           x11          x12
    .             .            .
    .             .            .

现在我已经设法正确完成大部分编码,我认为如下所示。 但是我真的需要以非常特定的格式获取 json output,这就是为什么我使用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]"},
...

任何帮助,将不胜感激

您可以创建一个 python 字典,然后让 Python 将其转换为 JSON String 并将其存储在一个文件中,而不是您自己“创建”JSON。

第一个错误是当您将len(df)-1传递到range function 时。范围 function 自动转到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

这是代码的示例 output:

{"Header1": "1", "Header2": "2", "Header3": "3"},
{"Header1": "6", "Header2": "5", "Header3": "4"},
{"Header1": "7", "Header2": "8", "Header3": "9"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM