【问题标题】:How to convert JSON to a CSV? [duplicate]如何将 JSON 转换为 CSV? [复制]
【发布时间】:2021-08-18 20:48:48
【问题描述】:

在 python 中将以下 JSON 转换为 CSV 的最佳方法是什么?

[{
    "header": "_id|_n|_p|_e|_v|_d|_r",
    "data": "1_qweqwe|sometitle|320|0|0|0|0;1_asdasdasd|sometitle2|130|0|0|0|0",
    "totalCount": 13
},
{
    "header": "_id|_n|_p|_e|_v|_d|_r",
    "data": "1_abccd|sometitle3|360|0|0|0|0;1_asdasdasd|sometitle4|320|0|0|0|0",
    "totalCount": 23
},
{
    "header": "_id|_n|_p|_e|_v|_d|_r",
    "data": "1_sdsfsd|sometitle5|600|0|0|0|0;1_asdasdasd|sometitle6|100|0|0|0|0",
    "totalCount": 33
}]

【问题讨论】:

  • 这能回答你的问题吗? How can I convert JSON to CSV?
  • 与您的想法相反,Stackoverflow 不是免费的编码服务。您应该发送honest attempt at the solution,然后然后在必要时询问有关它的具体问题。
  • 需要更多说明。 data 是否保存所有列的值? header 是否对所有项目都固定,是 CSV 文件的预期标题吗? totalCount 是什么意思?它是另一个列值吗?

标签: python json csv


【解决方案1】:

这是我能做的最好的:

import csv
import json

a=[]
x = """[{"header": "_id|_n|_p|_e|_v|_d|_r","data": "1_qweqwe|sometitle|320|0|0|0|0;1_asdasdasd|sometitle2|130|0|0|0|0","totalCount": 13},{"header": "_id|_n|_p|_e|_v|_d|_r","data": "1_abccd|sometitle3|360|0|0|0|0;1_asdasdasd|sometitle4|320|0|0|0|0","totalCount": 23},{"header": "_id|_n|_p|_e|_v|_d|_r","data": "1_sdsfsd|sometitle5|600|0|0|0|0;1_asdasdasd|sometitle6|100|0|0|0|0","totalCount": 33}]"""

x = json.loads(x)

f = csv.writer(open("test.csv", "w"))

f.writerow(["_id", "_n", "_p", "_e", "_v", "_d", "_r","_tt"])

for x in x:
    temp=x["totalCount"]
    for x in x["data"].split(";"):
        print(x)
        f.writerow([x.split('|')[0],x.split('|')[1],x.split('|')[2],x.split('|')[3],x.split('|')[4],x.split('|')[5],x.split('|')[6],temp])
    f.writerow([])

如果我们可以进一步改进,请告诉我。

【讨论】:

  • 此问题现已结束。所以无法发布任何答案。您可以尝试复制以下代码。但是,我不确定是否会保留格式。
  • 导入 numpy json_obj = [{ "header": "_id|_n|_p|_e|_v|_d|_r", "data": "1_qweqwe|sometitle|320|0|0|0 |0;1_asdasdasd|sometitle2|130|0|0|0|0", "totalCount": 13 }, { "header": "_id|_n|_p|_e|_v|_d|_r", "data": "1_abccd|sometitle3|360|0|0|0|0;1_asdasdasd|sometitle4|320|0|0|0|0", "totalCount": 23 }, { "header": "_id|_n|_p|_e |_v|_d|_r", "data": "1_sdsfsd|sometitle5|600|0|0|0|0;1_asdasdasd|sometitle6|100|0|0|0|0", "totalCount": 33 }] 标头= [“_id”,“_n”,“_p”,“_e”,“_v”,“_d”,“_r”,“_tt”]打印(标题)
  • table = [header] # 使用 json_obj 中项目的标题初始化表: data = item["data"].split(";") # 从 json 中获取单独的行数据 for row_data_text in data : row_data = row_data_text.split("|") row_data.append(item["totalCount"]) table.append(row_data) # 将行数据添加到表中 print(table) np_table = numpy.asarray(table) numpy. savetxt("foo.csv", np_table, delimiter=",", fmt="%s")
猜你喜欢
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多