Python-如何将CSV转换为JSON,并选择要放在前面的列?
我有一个示例CSV文件: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"
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"}'