Replace field names 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 field names in the output without changing the header of the CSV file?

My current output is:

 [ { "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" } ] 

Can 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" } ] 
+4
source share
2 answers

The easiest way is to simply install:

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

You can also keep old field names if you want.

+7
source

Just replace this line:

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

with this:

 reader = csv.DictReader(f, fieldnames=("id", "email", "name", "phone")) 
+2
source

Source: https://habr.com/ru/post/1485573/


All Articles