当前位置: 动力学知识库 > 问答 > 编程问答 >

python - Replace fieldnames when using DictReader

问题描述:

I have a test.csv file:

foo,bar,foobar,barfoo

1,2,3,4

5,6,7,8

9,10,11,12

And the following CSV parser:

#!/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

Is there an easy way to replace the fieldnames in the output, without changing the header of the CSV file?

My current output is this:

[

{

"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"

}

]

Could I get something like this:

[

{

"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"

}

]

网友答案:

The easiest way is to just set:

reader.fieldnames = "email", "name", "id",  "phone"

You can save the old fieldnames if you want too.

网友答案:

Just replace this line:

reader = csv.DictReader(f, fieldnames = ( "foo","bar","foobar","barfoo" ))

with this:

reader = csv.DictReader(f, fieldnames=("id", "email", "name", "phone"))
分享给朋友:
您可能感兴趣的文章:
随机阅读: