[英]how can python csv.reader() able to read or exempt (") inside (" ")
在我的 csv/txt 文件中有多个文本,如 ("UMBRELLA 21"") COL 50ML 将显示但下一行错误
icode,"COL 50ML",0, , , ,1370,"cat1",1,"ecode","O" icode,"UMBRELLA 21"",0, , , ,0,"cat2",1,"ecode","O"
Traceback (most recent call last): File "C:/Users/usern/Desktop/test3.py", line 18, in if x[5] == ' ': IndexError: list index out of range
import csv
file = csv.reader((open("C:\\Users\\usern\\Desktop\\ref\\data.txt","r")).readlines())
for data in file:
x = data
data1 = x[0]
data2 = x[1]
data2 = data2.replace("'","CHAR(39)")
data3 = x[2]
if x[3] == ' ':
x[3] = '0000-00-00'
data4 = x[3]
if x[4] == ' ':
x[4] = '0000-00-00'
data5 = x[4]
if x[5] == ' ':
x[5] = '0000-00-00'
data6 = x[5]
data7 = x[6]
data8 = x[7]
data9 = x[8]
data10 = x[9]
data11 = x[10]
print(str(data1)+','+str(data2)+','+str(data3)+','+str(data4)+','+str(data5)+','+str(data6)+','+str(data7)+','+str(data8)+','+str(data9)+','+str(data10)+','+str(data11))
在 CSV 格式中,将两个引号相邻放置是在字段中嵌套引号的方法之一。 所以UMBRELLA 21
之后的引号不会结束该字段,它会在下一个"
后跟一个,
结束。
结果,该行被解析为以下列表:
[
'icode',
'UMBRELLA 21",0, , , ,0,cat2"',
'1',
'ecode',
'O'
]
由于这只有 5 个字段,因此当您尝试访问x[5]
时会出现错误。
如果您想在第二个字段中使用字符串UMBRELLA 21"
,则 CSV 行应该是:
icode,"UMBRELLA 21""",0, , , ,0,"cat2",1,"ecode","O"
""
解析后变成单个"
,下一个"
结束字段。
您还可以对csv.reader()
使用escapechar
选项,并转义引号:
icode,"UMBRELLA 21\"",0, , , ,0,"cat2",1,"ecode","O"
file = list(csv.reader((open("C:\\Users\\usern\\Desktop\\ref\\data.txt","r"), escapchar='\\'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.