Python -将Json转换为表结构

kzmpq1sx  于 2023-10-21  发布在  Python
关注(0)|答案(4)|浏览(127)

我有一个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
}
']

所需输出:

qni6mghb

qni6mghb1#

1.您可以使用 json.load 将JSON转换为Python中的字典。
1.这个字典可以用 Pandas.Dataframe 转换成一个框架。
1.您可以使用 * pandas.Dataframe.to_csv* 将此框架导出为.csv,以便在Postgres中使用。

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

6psbrbz9

6psbrbz92#

使用下面的代码。

我使用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)

输出

['_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  |
+-------------+-------+-----------------+-----------------+---------------+--------------------+------------------+------------------+-----+
4c8rllxm

4c8rllxm3#

你不需要在json中使用外部的[]。下面是一个简单的例子,它使用[prettytable][1]写入文件并输出到std:

from prettytable import PrettyTable

def pretty_test():
'''test pretty table'''
header = ["City name", "Area"]
x = PrettyTable(header)
x.align["City name"] = "l"  # Left align city names
# One space between column edges and contents (default)
x.padding_width = 1
rows = [["Adelaide the city", 1295], ["Brisbane", 5905]]
with open('file.txt', 'w') as out:
    for elem in rows:
        x.add_row(elem)
        print(elem[0], elem[1])
    print(x)
    out.write(str(x))
exdqitrt

exdqitrt4#

from json2table import convert

html=convert(json.loads(json_data))
print(html)

我已经用它达到了很好的效果。

相关问题