Reputation: 605
I need to read a CSV file which has fields that have a comma, so I have double quoted the fields which contains commas, such as:
1, "text1,text2", "text3, text4", a, b, c
But when I try to read the file in Python I get the fields separated by the commas, as following:
row[0] = 1
row[1] = text1
row[2] = text2
row[3] = text3
row[4] = text4
row[5] = a
row[6] = b
row[7] = c
I am reading the CSV file with the following code:
info = csv.reader(open('./info.csv'))
for row in info :
print row[0] + " * " + row[1] ...
Is it possible to read double quoted fields which contains a comma?
Upvotes: 33
Views: 38107
Reputation: 11
You need to use a DictReader
on the file content.
The result looks like this
import csv
with open(file_name, mode ='r', encoding='utf-8') as file:
# reading the CSV file
csvFile = csv.DictReader(file)
# displaying the contents of the CSV file
for line in csvFile:
print(line["myAttribute"]
Upvotes: 1
Reputation: 601489
The Python csv
module actually does support quoted fields, even by default. Your problem here is that Python by default does not skip the space, so you need to use skipinitialspace=True
.
>>> s = StringIO.StringIO('1, "text1,text2", "text3, text4", a, b, c')
>>> list(csv.reader(s, skipinitialspace=True))
[['1', 'text1,text2', 'text3, text4', 'a', 'b', 'c']]
Upvotes: 46