我與一些CSV文件時,用下面的代碼:Python的CSV錯誤:行包含空字節
reader = csv.reader(open(filepath, "rU"))
try:
for row in reader:
print 'Row read successfully!', row
except csv.Error, e:
sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))
而且一個文件引發此錯誤:
file my.csv, line 1: line contains NULL byte
我能做?谷歌似乎暗示它可能是一個Excel文件,它被不當地保存爲.csv。有什麼辦法可以解決Python中的這個問題嗎?
== == UPDATE
繼@ JohnMachin的評論下面,我想這些行添加到我的腳本:
print repr(open(filepath, 'rb').read(200)) # dump 1st 200 bytes of file
data = open(filepath, 'rb').read()
print data.find('\x00')
print data.count('\x00')
這是我得到的輸出:
'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\ .... <snip>
8
13834
所以該文件確實包含NUL字節。
「od -c」表示第一行看起來像什麼? – 2010-11-12 15:22:15
我應該運行什麼查詢,如cat my.csv | od -c |更多 ?我得到:0000000 D e p a r t m e n t F a m i l – AP257 2010-11-12 15:35:13
CSV是如何生成的?從excel中,你可以嘗試一種方言。否則看看說:http://stackoverflow.com/questions/2753022/python-finding-unicode-ascii-problems – 2010-11-12 15:51:37