用Python读取字段中包含逗号的CSV文件
我需要读取一个CSV文件,这个文件里的某些字段包含逗号,所以我把这些字段用双引号括起来,比如:
1, "text1,text2", "text3, text4", a, b, c
但是当我在Python中尝试读取这个文件时,字段却被逗号分开了,变成了这样:
row[0] = 1
row[1] = text1
row[2] = text2
row[3] = text3
row[4] = text4
row[5] = a
row[6] = b
row[7] = c
我用以下代码来读取这个CSV文件:
info = csv.reader(open('./info.csv'))
for row in info :
print row[0] + " * " + row[1] ...
请问有没有办法读取那些包含逗号的双引号字段呢?
2 个回答
1
你需要在文件内容上使用一个叫做 DictReader
的工具。
结果看起来是这样的:
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"]
45
Python的csv
模块其实是支持带引号的字段的,甚至是默认就支持。你遇到的问题是,Python默认情况下不会跳过空格,所以你需要使用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']]