在写入Ex之前清除json中的标记

2024-09-27 00:20:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我从外部接收到一个json数据集,因此无法影响格式。数据值的格式为方括号和双引号。例如,[{“casenumber”:[“12345678”],“problemcode”:[“ABC123”],“TITLE”:[“你在开玩笑吗?”]}]

我能够将其读取/解析为数据框,但当我尝试将数据框写入Excel时,所有数据都用方括号和单引号标记。是否有一种方法可以删除所有标记,这样我就不需要手动清理Excel数据

在从JSON读取数据之后,我尝试了一些后处理数据的变体,但我无法让它正常工作

import json, 
def getJSONData(file):
    returnFrame = pd.DataFrame()
    with open(file, 'r', encoding="utf8") as jsonfile:
                json_data=jsonfile.read()
                loaded_json = json.loads(json_data)

                returnFrame=returnFrame.append(loaded_json)
    #strip out tags
    for label, content in returnFrame.iteritems():
                    returnFrame[label]=content.replace("[","")
    return returnFrame
.
.
.
caseDataFrame=getJSONData(JSONFolderFileName)
caseDataFrame.to_excel('CaseData'+str(time.time())+'.xlsx')

在excel中,数据如下所示(假设“|”是单元格边框):

案例编号|问题代码|标题

['12345678']['ABC123']['你在开玩笑吗?']

我宁愿它看起来像:

案例编号|问题代码|标题

12345678 | ABC123 |你在开玩笑吗


Tags: 数据标记jsondata格式contentexcellabel
1条回答
网友
1楼 · 发布于 2024-09-27 00:20:50

如果所有内容都采用相同的格式,则应该可以:

data =  [{ "casenumber":["12345678"],"problemcode":["ABC123"],"TITLE":["Are You Kidding Me?"] }]


import pandas as pd

def flatten_json(y):
    out = {}
    def flatten(x, name=''):
        if type(x) is dict:
            for a in x:
                flatten(x[a], name + a + '_')
        elif type(x) is list:
            i = 0
            for a in x:
                flatten(a, name + str(i) + '_')
                i += 1
        else:
            out[name[:-1]] = x
    flatten(y)
    return out



flat = flatten_json(data)

results = pd.DataFrame()
columns_list = list(flat.keys())
for item in columns_list:
    row_idx = item.split('_')[0]
    column = item.split('_')[1]

    row_idx = int(row_idx)
    value = flat[item]
    results.loc[row_idx, column] = value

results.to_excel('path/file.xls', index = False)

输出:

print (results)
  casenumber problemcode                TITLE
0   12345678      ABC123  Are You Kidding Me?

相关问题 更多 >

    热门问题