У меня есть test.csv
файл:Заменить имена полей при использовании DictReader
foo,bar,foobar,barfoo
1,2,3,4
5,6,7,8
9,10,11,12
И следующий CSV
анализатор:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
import json
f = open ('test.csv', 'r')
reader = csv.DictReader(f, fieldnames = ("foo","bar","foobar","barfoo"))
out = json.dumps([ row for row in reader ], ensure_ascii=False, encoding="utf-8")
print out
есть простой способ заменить имена полей в выходном сигнале, без изменения заголовок файла CSV
?
Мой выходной ток это:
[
{
"foobar":"foobar",
"foo":"foo",
"bar":"bar",
"barfoo":"barfoo"
},
{
"foobar":"3",
"foo":"1",
"bar":"2",
"barfoo":"4"
},
{
"foobar":"7",
"foo":"5",
"bar":"6",
"barfoo":"8"
},
{
"foobar":"11",
"foo":"9",
"bar":"10",
"barfoo":"12"
}
]
Могу ли я получить что-то вроде этого:
[
{
"id":"foobar",
"email":"foo",
"name":"bar",
"phone":"barfoo"
},
{
"id":"3",
"email":"1",
"name":"2",
"phone":"4"
},
{
"id":"7",
"email":"5",
"name":"6",
"phone":"8"
},
{
"id":"11",
"email":"9",
"name":"10",
"phone":"12"
}
]
Ох. Таким образом, 'fieldnames' не должны соответствовать фактическим« именам полей »строки заголовка в« CSV »? – cherrun
@cherrun Нет, они этого не делают. На боковой ноте вам даже не нужно указывать их так, как вы. 'csv.DictReader (f)' будет читать первую строку как заголовок по умолчанию, без необходимости использовать 'fieldnames = ...', но, возможно, это лучше, как у вас есть – jamylak