AP2*_*257 10 python csv encoding
我正在阅读带有Python csv
模块的文件,并且还有另一个编码问题(抱歉,这里有很多).
在CSV文件中,有£符号.读完行并打印后,它们就变成了\ xa3.
尝试将它们编码为Unicode会产生UnicodeDecodeError
:
row = [unicode(x.strip()) for x in row]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我一直在阅读关于StackOverflow 的csv文档和许多其他问题.我认为在ASCII中成为\ xa3意味着原始CSV文件是UTF-8.
(顺便提一下,有没有快速检查CSV文件编码的方法?)
如果它是UTF-8,那么csv模块是否应该能够应对它?它似乎正在将所有符号转换为ASCII,即使文档声称它接受UTF-8.
我已经尝试添加csv示例中unicode_csv_reader
描述的函数,但它没有帮助.
----编辑-----
我应该澄清一件事.我看过这个看起来很相似的问题.但添加unicode_csv_reader
定义的函数会产生不同的错误:
yield [unicode(cell, 'utf-8') for cell in row]
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 8: unexpected code byte
Run Code Online (Sandbox Code Playgroud)
那么也许我的文件毕竟不是UTF8?我该怎么说?
尝试使用"ISO-8859-1"进行编码.看起来你正在处理扩展的ASCII,而不是Unicode.
编辑:
这是一些处理扩展ASCII的简单代码:
>>> s = "La Pe\xf1a"
>>> print s
La Pe±a
>>> print s.decode("latin-1")
La Peña
>>>
Run Code Online (Sandbox Code Playgroud)
更好的是,处理给你带来问题的确切角色:
>>> s = "12\xa3"
>>> print s.decode("latin-1")
12£
>>>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6840 次 |
最近记录: |