Python-将Json转换为表结构

Dou*_*g P 4 python json list

我有一个 JSON,其结构如下,放入 python 变量的列表中。我想将此 JSON 值提取为表格。我的问题是,如何从列表中提取它以及如何将其更改为表格?

转换完成后,我会将输出插入到 Postgres 表中。

JSON结构

['
{
    "_id": {
        "$Col1": "XXXXXXX2443"
    },
    "col2": false,
    "col3": "359335050111111",
    "startedAt": {
        "$date": 1633309625000
    },
    "endedAt": {
        "$date": 1633310213000
    },
    "col4": "YYYYYYYYYYYYYYYYYY",
    "created_at": {
        "$date": 1633310846935
    },
    "updated_at": {
        "$date": 1633310846935
    },
    "__v": 0
}
']
Run Code Online (Sandbox Code Playgroud)

期望的输出:

在此输入图像描述

小智 8

  1. 您可以使用json.load将 Json 转换为 python 中的字典。

  2. 可以使用Pandas.Dataframe将该字典转换为数据帧。

  3. 您可以使用pandas.Dataframe.to_csv将此数据帧导出为 .csv,以便在 Postgres 中使用。

注意: 这需要安装 Pandas 库。或者,您可以简单地安装 Anaconda(如果您使用任何其他 IDE),并且最常用的软件包会随之安装。


abd*_*004 6

使用下面的代码。

我使用 PrettyTable 模块在类似表格的结构中进行打印。使用此 - https://www.geeksforgeeks.org/how-to-make-a-table-in-python/作为表过程。

此外,所有标头和值都将存储在标头和值变量中。

import json
from prettytable import PrettyTable

value = ['''
       {
           "_id": {
               "$Col1": "XXXXXXX2443"
           },
           "col2": false,
           "col3": "359335050111111",
           "startedAt": {
               "$date": 1633309625000
           },
           "endedAt": {
               "$date": 1633310213000
           },
           "col4": "YYYYYYYYYYYYYYYYYY",
           "created_at": {
               "$date": 1633310846935
           },
           "updated_at": {
               "$date": 1633310846935
           },
           "__v": 0
       }''']

dictionary = json.loads(value[0])
headers = []
values = []
for key in dictionary:
    head = key
    value = ""
    if type(dictionary[key]) == type({}):
        for key2 in dictionary[key]:
            head += "/" + key2
            value = dictionary[key][key2]
            headers.append(head)
            values.append(value)

    else:
        value = dictionary[key]
        headers.append(head)
        values.append(value)

print(headers)
print(values)
myTable = PrettyTable(headers)

myTable.add_row(values)
print(myTable)
Run Code Online (Sandbox Code Playgroud)

输出

['_id/$Col1', 'col2', 'col3', 'startedAt/$date', 'endedAt/$date', 'col4', 'created_at/$date', 'updated_at/$date', '__v']
['XXXXXXX2443', False, '359335050111111', 1633309625000, 1633310213000, 'YYYYYYYYYYYYYYYYYY', 1633310846935, 1633310846935, 0]

+-------------+-------+-----------------+-----------------+---------------+--------------------+------------------+------------------+-----+
|  _id/$Col1  |  col2 |       col3      | startedAt/$date | endedAt/$date |        col4        | created_at/$date | updated_at/$date | __v |
+-------------+-------+-----------------+-----------------+---------------+--------------------+------------------+------------------+-----+
| XXXXXXX2443 | False | 359335050111111 |  1633309625000  | 1633310213000 | YYYYYYYYYYYYYYYYYY |  1633310846935   |  1633310846935   |  0  |
+-------------+-------+-----------------+-----------------+---------------+--------------------+------------------+------------------+-----+
Run Code Online (Sandbox Code Playgroud)