首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中为各个键:值对将.csv格式化为json

在python中为各个键:值对将.csv格式化为json
EN

Stack Overflow用户
提问于 2014-06-03 06:28:09
回答 1查看 1.5K关注 0票数 1

我尝试使用json.dump()将单个键:值对从csv文档格式化为JSON。虽然它似乎在很大程度上运行良好,但它将整数转换为字符串(或者可能我需要将字符串转换为整数,这取决于它的查看方式),这是我不想要的,而且我还需要一个键:值对才能成为JSON数组。

目前我的代码基本上是这样的:

代码语言:javascript
复制
import csv
import json

csvfile = open('spreadsheet.csv', 'r')
jsonfile = open('fileTo.json', 'w') 

fieldnames = ("Id","name","TypeId","Type", "listHere")
reader = csv.DictReader( csvfile, fieldnames)

for row in reader:
    json.dump(row, jsonfile, sort_keys=True, indent=4, separators=(',', ':'))
    jsonfile.write(',')
    jsonfile.write('\n') 

其中,我需要Id和TypeId为整数,listHere为JSON数组。

当前输出是这样的:

代码语言:javascript
复制
[
    {
        "name":"someName",
        "Id":"1",
        "Type":"someType",
        "TypeId":"2",
        "listHere":"someList"
    },
]

我需要的是:

代码语言:javascript
复制
 [
    {
        "name":"someName",
        "Id":1,
        "Type":"someType",
        "TypeId":2,
        "listHere":
        [
             "someList"
        ]       
    },
]

我通读了文档,但我真的不知道如何使用包含数千个条目的电子表格来完成此操作。任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-03 06:42:48

csv不支持列类型,尽管那样会更好。

下面的代码(未经测试)对某些字段有一个"fixer“函数。在将每一行转换为JSON之前,一些字段的值将使用fixer函数进行转换。在本例中为int(field)

JSON注意:虽然每一行都输出为,但整个列表不是。目前它有一个后缀",“。考虑使用json.iterencode()将数据“流式”传输到JSON文件。

代码语言:javascript
复制
import csv
import json

csvfile = open('spreadsheet.csv', 'r')
jsonfile = open('fileTo.json', 'w') 

fieldnames = ("Id","name","TypeId","Type", "listHere")
fieldfixers = {
    'Id': int,
    'Type': int,
}
reader = csv.DictReader( csvfile, fieldnames)

for row in reader:
    for key,value in row.iteritems():
        ffunc = fieldfixers.get(key)
        if ffunc:
            row[key] = ffunc(value)
    json.dump(row, jsonfile, sort_keys=True, indent=4, separators=(',', ':'))
    jsonfile.write(',')
    jsonfile.write('\n') 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24004297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档