2011-06-27 76 views
0

我正在循環讀取csv文件。問題是在csv文件中插入了一些NUll值,而當for循環讀取這些行時,它會產生錯誤。儘管連續出現空值,仍繼續讀取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 : 

在讀者在線: _csv.Error:行包含空字節

如果我使用"try and except",只要它得到它裏面 進入除空值並且不會繼續讀取文件中的其他行。而我想循環跳過空值並繼續讀取文件中的其他行。

我的樣本數據是:

"a";"b";"c" 
NulNulNul "f";"v";"x" 
"aaa";"fb";"a" 
"abb";"aab";"aac" 

而對於循環中後,我想要的數據,

"a";"b";"c" 
"f";"v";"x" 
"aaa";"fb";"a" 
"abb";"aab";"aac" 

回答

2
reader = csv.reader((line.replace('\0','') for line in f) , delimiter=';',quotechar = '"') 

這從線去除完全無效csv.reader得到他們之前

+0

哇..非常感謝..它的工作完美... –