Python-查找unicode / ascii问题


问题内容

我是csv.reader,可以从很长的表格中获取信息。我正在对该数据集进行工作,然后使用xlwt包给我一个可行的excel文件。

但是,我收到此错误:

UnicodeDecodeError:’ascii’编解码器无法解码位置34的字节0x92:序数不在范围内(128)

我向所有人提出的问题是,如何才能找到该错误在数据集中的确切位置?另外,是否有一些我可以编写的代码可以浏览我的数据集并找出问题所在(因为某些数据集在运行时没有上述错误,而其他数据集却有问题)?


问题答案:

答案实际上很简单:一旦从文件中读取数据,就使用文件的编码将其转换为unicode,并处理UnicodeDecodeError异常:

try:
        # decode using utf-8 (use ascii if you want)
        unicode_data = str_data.decode("utf-8")
except UnicodeDecodeError, e:
        print "The error is there !"

这将使您免于许多麻烦;您不必担心多字节字符编码,并且外部库(包括xlwt)仅在需要编写“正确的东西”时才做。

Python 3.0将强制要求指定字符串的编码,因此现在开​​始这样做是个好主意。