清理python中错误的json格式

2024-09-27 00:14:37 发布

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

我收到了一个json文件,里面有一些数据,我要分析。数据来自sql数据库,因此,它通常是以表的形式构造的。然而,当我收到它时,它看起来是这样的:

{'TimeStamp1': '2018-06-03 00:21:04', 'Owner1': 'Some owner', 'Description1': 'A description', 'TimeStamp2': '2018-06-03 00:22:15', 'Owner2': 'A new Owner', 'Description2': 'A new description'}

。。。等等。所以只有一行/一个对象包含所有数据和多个几乎同名的键。如何在Python中将其浓缩为类似于sql设置或:

{'records':
   {'TimeStamp': '2018-06-03 00:21:04', 'Owner': 'Some owner', 'Description': 'A description'}, 
   {'TimeStamp': '2018-06-03 00:22:15', 'Owner': 'A new Owner', 'Description': 'A new description'}
}

并且仍然保证权利所有人与相关的时间戳和描述在同一行?:)


Tags: 文件数据数据库jsonnewsqlsomedescription
1条回答
网友
1楼 · 发布于 2024-09-27 00:14:37

这里有一个简单的方法。这可能是优化,但它应该做你想做的,而且非常简单

def sanitize(d, keys):
    b = 0
    records = []

    #get  the highest numerical key
    for key in x.keys():
        cur_key_num = int(" ".join(re.findall("[1-9]+", key)))
        if cur_key_num > b:
            b = cur_key_num

    #go through key numbers 1 at a time
    for i in range(1, b+1):
        rec = {}

        #build a dictionary for each keynum
        for key in keys:
            rec[key] = d[key + str(i)]
        re cords.append(rec)

    return records

函数的用法如下:

data = {'TimeStamp1': '2018-06-03 00:21:04', 'Owner1': 'Some owner', 'Description1': 'A description', 'TimeStamp2': '2018-06-03 00:22:15', 'Owner2': 'A new Owner', 'Description2': 'A new description'}
k = ['TimeStamp', 'Owner', 'Description']
r = sanitize(data, k)

并返回:

[{'Owner': 'Some owner', 'TimeStamp': '2018-06-03 00:21:04', 'Description': 'A description'}, {'Owner': 'A new Owner', 'TimeStamp': '2018-06-03 00:22:15', 'Description': 'A new description'}]

相关问题 更多 >

    热门问题