Python-如何将CSV转换为JSON,并选择要放在前面的列?

Python-如何将CSV转换为JSON,并选择要放在前面的列?,python,json,csv,Python,Json,Csv,我有一个示例CSV文件: zipcode,firstname,lastname,email 12345,mike,alson,mike@m.com 54321,joe,don,joe@j.com 需要以以下格式创建输出文件: SET 12345 '{"firstname": "mike", "lastname": "alson", "email": "mike@m.com"}' SET 54321 '{"firstname": "joe", "lastname": "don", "email"

我有一个示例CSV文件:

zipcode,firstname,lastname,email
12345,mike,alson,mike@m.com
54321,joe,don,joe@j.com
需要以以下格式创建输出文件:

SET 12345 '{"firstname": "mike", "lastname": "alson", "email": "mike@m.com"}'
SET 54321 '{"firstname": "joe", "lastname": "don", "email": "joe@j.com"}'
如何做到这一点

我从以下内容开始:

#!/usr/bin/python
import csv, json
csvreader = csv.reader(open('data.csv', 'rb'), delimiter=',', quotechar='"')
data = []
for row in csvreader:
    r = []
    for field in row:
        if field == '': field = None
        else: field = unicode(field, 'ISO-8859-1')
        r.append(field)
    data.append(r)
jsonStruct = {
    'header': data[0],
    'data': data[1:]
}
open('data.json', 'wb').write(json.dumps(jsonStruct))
将您的行读入,然后使用一个序列化的JSON格式字符串分别编写邮政编码,该字符串来自以下元素之一:

from csv import DictReader
from json import dumps

with open("rows.csv") as csv_file, open("output.txt", mode="w") as out_file:
    csv_reader = DictReader(csv_file)
    for row in csv_reader:
        zipcode = row["zipcode"]
        rest = {k: v for k, v in row.items() if k != "zipcode"}
        out_file.write("SET %s '%s'\n" % (zipcode, dumps(rest)))
output.txt:

注意:从Python3.6开始,DictReader返回的行数将在写入文件时保持顺序。对于较低版本,您需要手动处理此问题

SET 12345 '{"firstname": "mike", "lastname": "alson", "email": "mike@m.com"}'
SET 54321 '{"firstname": "joe", "lastname": "don", "email": "joe@j.com"}'