Remplacer fieldnames lors de l'utilisation de DictReader
J'ai un test.csv
fichier:
foo,bar,foobar,barfoo
1,2,3,4
5,6,7,8
9,10,11,12
Et suivants CSV
analyseur:
#!/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
Est-il un moyen facile de remplacer le fieldnames dans la sortie, sans changer l'en-tête de la CSV
fichier?
Ma courant de sortie est: est-ce
[
{
"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"
}
]
Je pourrais obtenir quelque chose comme ceci:
[
{
"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"
}
]
OriginalL'auteur cherrun | 2013-06-11
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple est juste de définir:
Vous pouvez économiser de l'ancien fieldnames si vous le souhaitez.
fieldnames
n'ont pas à correspondre avec le réelfieldnames
de la ligne d'en-tête dans leCSV
?Non, ils ne le font pas. Sur une note de côté, Vous n'avez même pas besoin de les spécifier comme vous l'avez fait.
csv.DictReader(f)
va lire la première ligne de l'en-tête par défaut, sans avoir besoin pourfieldnames=...
mais c'est peut-être mieux la façon dont vous l'avezOriginalL'auteur jamylak
Il suffit de remplacer cette ligne:
:
OriginalL'auteur Oleksandr Fedorov