相关疑难解决方法(0)

在Python中从gzip'ed CSV中删除BOM

我正在使用以下代码解压缩并保存CSV文件:

with gzip.open(filename_gz) as f:
    file = open(filename, "w");
    output = csv.writer(file, delimiter = ',')
    output.writerows(csv.reader(f, dialect='excel', delimiter = ';'))
Run Code Online (Sandbox Code Playgroud)

一切似乎都有效,除了文件中的第一个字符是意外的.谷歌搜索似乎表明它是由于文件中的BOM.

我已经读过在utf-8-sig中编码内容应该可以解决这个问题.但是,添加:

.read().encoding('utf-8-sig')
Run Code Online (Sandbox Code Playgroud)

到csv.reader中的f失败:

File "ckan_gz_datastore.py", line 16, in <module>
    output.writerows(csv.reader(f.read().encode('utf-8-sig'), dialect='excel', delimiter = ';'))
File "/usr/lib/python2.7/encodings/utf_8_sig.py", line 15, in encode
    return (codecs.BOM_UTF8 + codecs.utf_8_encode(input, errors)[0], len(input))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如何删除BOM并将内容保存为正确的utf-8?

python csv byte-order-mark

3
推荐指数
1
解决办法
2282
查看次数

标签 统计

byte-order-mark ×1

csv ×1

python ×1