我有一个文件,我希望使用 CSV 阅读器解析它,它有 12 行,但有些列包含引号,使事情变得更复杂的还有逗号、单引号和换行符,问题是 csv 阅读器不正确处理引号,引号中的引号被视为一个单独的实体,这里是我正在处理的一小部分示例。
ptr = open("myfile")
text = ptr.read()
ptr.close()
for l in csv.reader(text, quotechar='"', delimiter=',',quoting=csv.QUOTE_ALL, skipinitialspace=True):
print l
文件包含:
"0","11/21/2013","NEWYORK","USA
Atlantic ","the person replied \"this quote\" to which i was shocked,
this came as an utter surprise"
"1","10/18/2013","London","UK","please note the message \"next quote\"
is invalid"
"2","08/11/2014","Paris","France",
"the region is in a very important geo strategic importance"
请您参考如下方法:
您必须在阅读器中设置 escapechar:
csv.reader(..., escapechar='\\')
默认情况下是None(不知道为什么)。
第二件事是你错误地初始化了阅读器。您不会将字符串传递给阅读器,而是流:
with open("myfile") as fo:
reader = csv.reader(
fo,
quotechar='"',
delimiter=',',
quoting=csv.QUOTE_ALL,
skipinitialspace=True,
escapechar='\\'
)
for row in reader:
print row
