私は次のコードでいくつかの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))
そして、1つのファイルがこのエラーを投げています:
file my.csv, line 1: line contains NULL byte
私に何ができる?グーグルはそれが不適切に.csvとして保存されたExcelファイルである可能性があることを示唆しているようです。Pythonでこの問題を回避する方法はありますか?
==更新==
以下の@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
最初の行はどのように表示されますか?