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将强制要求指定字符串的编码,因此现在开始这样做是个好主意。