Python JSON到CSV表?

2024-07-08 08:16:18 发布

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

我想知道如何导入一个JSON文件,然后将其保存到一个有序的CSV文件中,其中包含头行和下面的适用数据。在

JSON文件如下所示:

 [
  {
    "firstName": "Nicolas Alexis Julio",
    "lastName": "N'Koulou N'Doubena",
    "nickname": "N. N'Koulou",
    "nationality": "Cameroon",
    "age": 24
  },
  {
    "firstName": "Alexandre Dimitri",
    "lastName": "Song-Billong",
    "nickname": "A. Song",
    "nationality": "Cameroon",
    "age": 26,
    etc. etc. + } ]

注意有多个“键”(名字、姓氏、昵称等)。我想创建一个CSV文件与那些作为标题,然后适用的信息下面的行,每一行有一个球员的信息。在

以下是迄今为止我为Python编写的脚本:

^{pr2}$

但当我运行它时,我得到一个“TypeError:unhashable type:'list'”错误。我还在学习Python(显然我是这么想的)。我在网上查了一下(找到了this),如果不明确说明我要打印什么键,我就不知道该怎么做……我不想单独列出每一个。。。在

谢谢你的任何帮助/想法!请让我知道,如果我可以澄清或提供更多的信息。在


Tags: 文件csv信息jsonagesongnicknameetc
2条回答

您的TypeError正在发生,因为您正在尝试索引字典,x使用列表,list_of_attributes与{}建立索引。这不是python的工作方式。在本例中,您正在迭代readable_json,它将在每次迭代中返回一个字典。不需要从这些数据中提取值来写出它们。在

DictWriter应该能给你想要的东西。在

import csv
[...]

def encode_dict(d, out_encoding="utf8"):    
    '''Encode dictionary to desired encoding, assumes incoming data in unicode'''
    encoded_d = {}
    for k, v in d.iteritems():
        k = k.encode(out_encoding)
        v = unicode(v).encode(out_encoding)        
        encoded_d[k] = v
    return encoded_d

list_of_attributes = readable_json[0].keys()
# sort fields in desired order
list_of_attributes.sort()

with open('WCData_Rows.csv',"wb+") as csv_out:
    writer = csv.DictWriter(csv_out, fieldnames=list_of_attributes)
    writer.writeheader()
    for data in readable_json:
        writer.writerow(encode_dict(data))

注意: 这假设readable_json中的每个条目都有相同的字段。在

也许pandas可以做到这一点,但我最近尝试阅读JSON

import pandas as pd

df = pd.read_json( ... )

df.to_csv( ... )

pandas.DataFrame.to_csv

pandas.io.json.read_json


编辑:

^{pr2}$

结果:

   age             firstName            lastName nationality     nickname
0   24  Nicolas Alexis Julio  N'Koulou N'Doubena    Cameroon  N. N'Koulou
1   26     Alexandre Dimitri        Song-Billong    Cameroon      A. Song

使用pandas可以将其保存在csvexcel等(甚至可以直接保存在数据库中)。在

您可以对表中的数据执行一些操作,并将其显示为图形。在

相关问题 更多 >

    热门问题