当前位置: 首页 > 面试题库 >

CSV嵌套JSON?

陈鸿才
2023-03-14
问题内容

我正在尝试将平面结构的CSV转换为嵌套的JSON结构。CSV是从SQL生成的,SQL为每个主要ID创建多个行。CSV的结构如下:

PrimaryId,FirstName,LastName,City,CarName,DogName
100,John,Smith,NewYork,Toyota,Spike
100,John,Smith,NewYork,BMW,Spike
100,John,Smith,NewYork,Toyota,Rusty
100,John,Smith,NewYork,BMW,Rusty
101,Ben,Swan,Sydney,Volkswagen,Buddy
101,Ben,Swan,Sydney,Ford,Buddy
101,Ben,Swan,Sydney,Audi,Buddy
101,Ben,Swan,Sydney,Volkswagen,Max
101,Ben,Swan,Sydney,Ford,Max
101,Ben,Swan,Sydney,Audi,Max
102,Julia,Brown,London,Mini,Lucy

所需的JSON输出为:

{
    "data": [
        {
            "City": "NewYork", 
            "FirstName": "John", 
            "PrimaryId": 100, 
            "LastName": "Smith", 
            "CarName": [
                "Toyota", 
                "BMW"
            ], 
            "DogName": [
                "Spike", 
                "Rusty"
            ]
        }, 
        {
            "City": "Sydney", 
            "FirstName": "Ben", 
            "PrimaryId": 101, 
            "LastName": "Swan", 
            "CarName": [
                "Volkswagen", 
                "Ford", 
                "Audi"
            ], 
            "DogName": [
                "Buddy", 
                "Max"
            ]
        }, 
        {
            "City": "London", 
            "FirstName": "Julia", 
            "PrimaryId": 102, 
            "LastName": "Brown", 
            "CarName": [
                "Mini"
            ], 
            "DogName": [
                "Lucy"
            ]
        }
    ]
}

这一个帮助,但我还没有建立正确的结构。


问题答案:

这是使用的一般方法csv.DictReader

首先加载数据

import csv
import itertools
with open('stuff.csv', 'rb') as csvfile:
    all_ = list(csv.DictReader(csvfile))

现在,您可以用来itertools.groupby对每个组进行分组和处理。例如

d = []
for k, g in itertools.groupby(
        all_, 
        key=lambda r: (r['PrimaryId'], r[' LastName'])):
    d.append({
        'PrimaryId': k[0],
        'LastName': k[1],
        'CarName': [e[' CarName'] for e in g]
        })

将按主要ID和姓氏分组,并列出汽车列表。

一旦有了类似的东西,就可以使用json.dumps()



 类似资料:
  • 我有一个这样的 CSV: 我使用spliter逐行处理记录,然后在dataweave中使用splitBy“,”将记录转换为地图。但我如何才能为“;”做另一个层次的拆分呢?SplitBy不允许多个分隔符,数据编织中的CSV类型也不允许。 最终,我想要一个这样的JSON: 有什么想法吗?

  • 问题内容: 我已经阅读了从平面csv创建嵌套JSON的内容,但对我而言没有帮助。 我有一个很大的电子表格,它是由Google文档创建的,包含11行和74列(某些列未占用)。 我在Google云端硬盘上创建了一个示例。导出为a时,它看起来像这样: 现在,我想要一个结构,如下所示: 以此类推。 我的理论方法是逐行遍历文件(这是第一个问题:现在每一行等于一行,但有时是几行,因此我需要计算逗号?)。每行等

  • 问题内容: 我正在尝试将嵌套的字典写入.csv文件。这是一个简单的示例: 这使我得到一个包含两列的表:第一个包含; 第二个包含[2,1,1](或子词典中的相应值)。我想要一个有四列的表:一列对应的列表元素,然后三列对应的列表元素。 问题答案: 更改: 至: 否则,您会尝试向csv编写类似的内容,而您的意思是。 如Padraic所述,您可能希望更改为或避免随机行为。

  • 问题内容: 我正在努力解决这个问题。我有一个JSON文件,需要将其放到CSV中,如果结构是扁平的,没有深层嵌套的项目,就可以了。 但是在这种情况下,嵌套会使我烦恼。 我将如何以这种格式获取数据: 每个对象和对象中的每个种族? 我想这样输出到CSV: 所以首先我得到正确的密钥: 然后添加数据: 但是如何? 对于您熟练的forlooper来说,这应该是一个有趣的过程。 问题答案: 我只收集第一个对象的

  • 这个问题被问了很多次,但我找不到解决问题的答案。 我试图将嵌套的JSON格式转换为CSV格式如下: JSON结构是任意的,可以是任何东西,嵌套或不嵌套。 我不应该知道它,这是一个数据库答案,我需要将这个JSON答案导出到CSV文件中。 下面是一个例子 输入: 我想要的结果是: 这是一个例子,它可以是任何其他JSON文档。 这里的想法是在CSV列名中使用点表示法。 我已经使用了CDL,但输出不是我想

  • 问题内容: 我有正在使用nodeJS读取的csv文件。我在阅读之前将每个文件转换为文本。 文件中的每一行都有以’=’分隔的数据。 每行看起来像 “ =“之前的第一部分代表我应用程序中json对象的索引。我的目的是解析此数据并为其构建json表示,以便上面的行成为 使用javascript / node js; 如何将应该表示嵌套JSON键序列的字符串转换为上述json对象? 问题答案: 您可以分割

  • 我有一个嵌套的对象 JSON 结构,如下所示; 我的输出CSV应该是这样的; {“name”:“Sydney”,“type”:“record”,“namespace”:”Sydney“,“fields”:[{“name:”Bikes“,“type:”{“type:“array”,“items”:{“name”:“Vehicle”,“type”:“record”,“field”:[{“name“:”

  • 我正在使用CSV数据集在JMeter中生成http请求。我想生成如下所示的嵌套json: