将JSON转换为CSV(再次)

2024-04-18 16:55:26 发布

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

我做了一个噩梦,想把我的JSON转换成CSV,我也试着跟着这里的其他线程,但我是一个绝对的新手,在这方面也做了很多努力,如果有人能给我指出正确的方向,我会非常棒。你知道吗

我将在下面提供JSON示例,很抱歉重复了一个被问了很多次的问题。你知道吗

{
"ApiMessage": "Inventory Returned",
"ApiNumber": "InvS001",
"inventoryResponse": [
    {
        "Sku_Id": "007BLKWHT3",
        "Total_Stock": 0,
        "Unavailable": 0
    },
    {
        "Sku_Id": "007BLKWHT4",
        "Total_Stock": 2,
        "Unavailable": 1
    },
    {
        "Sku_Id": "007BLKWHT5",
        "Total_Stock": 0,
        "Unavailable": 0
    },

我只需要它,这样我就可以有一个CSV文件,其中有三列和每个列中的值

所以。。你知道吗

Sku ID         Total_Stock          Unavailable
dsdsdsdsd           2                    0

Tags: csvidjson示例stock方向线程total
3条回答

使用csv.DictWriter将词典列表写入文件

import csv

dct = {
"ApiMessage": "Inventory Returned",
"ApiNumber": "InvS001",
"inventoryResponse": [
    {
        "Sku_Id": "007BLKWHT3",
        "Total_Stock": 0,
        "Unavailable": 0
    },
    {
        "Sku_Id": "007BLKWHT4",
        "Total_Stock": 2,
        "Unavailable": 1
    },
    {
        "Sku_Id": "007BLKWHT5",
        "Total_Stock": 0,
        "Unavailable": 0
    }] }

#Open csv file
with open('file.txt', 'w') as fp:
    #Open dict writer with fieldnames
    writer = csv.DictWriter(fp, fieldnames=['Sku_Id', 'Total_Stock', 'Unavailable'], delimiter=',')
    #Write header and write all rows
    writer.writeheader()
    print(writer.writerows(dct['inventoryResponse']))

输出将是

Sku_Id,Total_Stock,Unavailable
007BLKWHT3,0,0
007BLKWHT4,2,1
007BLKWHT5,0,0

我手边写了这个解决方案,所以它不是最好的(你可以使用csvpandas或许多libs中的一个,它可以做得更好,但如果你只需要它做一件事,我相信它会做的工作:

myjson = {
    "ApiMessage": "Inventory Returned",
    "ApiNumber": "InvS001",
    "inventoryResponse": [
        {
            "Sku_Id": "007BLKWHT3",
            "Total_Stock": 0,
            "Unavailable": 0
        },
        {
            "Sku_Id": "007BLKWHT4",
            "Total_Stock": 2,
            "Unavailable": 1
        },
        {
            "Sku_Id": "007BLKWHT5",
            "Total_Stock": 0,
            "Unavailable": 0
        }
    ]
}

DELIMITER = "         "

with open("my_file.csv", "w") as csvfile:
    csvfile.write(DELIMITER.join(["Sku ID", "Total_Stock", "Unavailable"]) + "\n")
    for item in myjson["inventoryResponse"]:
        csvfile.write(DELIMITER.join([str(e) for e in item.values()]) + "\n")

使用pandas读入json,然后导出到CSV。你知道吗

下面是一个在一行中执行此操作的示例:

https://copdips.com/2018/06/converting-python-json-list-to-csv-in-2-lines-of-code-by-pandas.html

相关问题 更多 >