我收到了一个Excel文件,其内容我无法控制。其中包含一些Unicode字符,如“á”或“é”。
我的代码没有改变,但我从Eclipse Juno迁移到LiClipse,并同时迁移到不同的Python包(从2.5到2.6)。原则上,我正在使用的特定包在win32com包上有一个可用版本。
当我读取Excel文件并使用str()提取和转换字符串时,我的代码崩溃了。控制台输出如下:
在一个内部循环中,我提取单元格的值:
如果我在Excel中删除非ASCII字符,则一切都能顺利进行。 我尝试了这个编码建议。 我查找的任何其他解决方案都建议以特定格式保存文件,但我无法这样做。
令我困惑的是,使用相同的输入Excel时,该代码之前是正常工作的,但转换为LiClipse和2.6 Python后就出现问题了。
有什么想法可以帮助我前进吗?
我的代码没有改变,但我从Eclipse Juno迁移到LiClipse,并同时迁移到不同的Python包(从2.5到2.6)。原则上,我正在使用的特定包在win32com包上有一个可用版本。
当我读取Excel文件并使用str()提取和转换字符串时,我的代码崩溃了。控制台输出如下:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 89: ordinal not in range(128)
具体而言,我执行以下操作:
读取Excel文件:
xlApp = Dispatch("Excel.Application")
excel = xlApp.Workbooks.Open(excel_location)
在一个内部循环中,我提取单元格的值:
cell_value = self.excel.ActiveSheet.Cells(excel_line + 1, excel_column + 1)
最后,如果我尝试将cell_value转换为字符串,会崩溃:
print str(cell_value)
如果我在Excel中删除非ASCII字符,则一切都能顺利进行。 我尝试了这个编码建议。 我查找的任何其他解决方案都建议以特定格式保存文件,但我无法这样做。
令我困惑的是,使用相同的输入Excel时,该代码之前是正常工作的,但转换为LiClipse和2.6 Python后就出现问题了。
有什么想法可以帮助我前进吗?
print(cell_value)
时会发生什么。 - Padraic Cunningham