在循环中继续读取行,即使行中有空值
我在循环中读取csv文件。问题是,有些csv文件里插入了NULL值,当for循环读取到这些行时,就会报错。
我的代码是:
reader = csv.reader(f, delimiter=';',quotechar = '"')
data = StringIO.StringIO()
for line in reader:
data.write("\"" + str(line[i].encode('UTF-8')) + "\"")
.......
and the error is :
for line in reader: _csv.Error: line contains NULL byte
如果我使用了"try and except"
,一旦遇到NULL值,它就会进入except部分,然后就不再继续读取文件中的其他行了。而我希望for循环能够跳过NULL值,继续读取文件中的其他行。
我的示例数据是:
"a";"b";"c"
NulNulNul "f";"v";"x"
"aaa";"fb";"a"
"abb";"aab";"aac"
我希望for循环结束后得到的数据是:
"a";"b";"c"
"f";"v";"x"
"aaa";"fb";"a"
"abb";"aab";"aac"
1 个回答
2
reader = csv.reader( (line.replace('\0','') for line in f) , delimiter=';',quotechar = '"')
这段话的意思是,这个操作会在csv.reader处理这些行之前,把行中的空值去掉。