在Excel2007电子表格(我使用xlrd xlwt和openpyxl)中处理德语单词(有时包含元音变音符),我得到以下值:
var = str(ws.cell(row=i+k,column=0).value).encode('latin-1')
我得到打印(var):
^{pr2}$直到出现一个包含元音变音字符的单词,当我得到:
Traceback (most recent call last):
File "C:\Users\cristina\Documents\horia\Linguistics3\px t3.py", line 68, in <module>
var = str(ws4.cell(row=i+k,column=0).value).encode('latin-1')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 3:ordinal not in range(128)
程序就停止了。在
如果我将var定义为:
var = u'str(ws4.cell(row=i+k,column=0).value)'.encode('latin-1')
当尝试打印(var)时,我得到:
var=str(ws.cell(row=i+k,column=0).value)
程序正常运行直到结束
我可以在pythonshell中获得var的值,但不能通过程序中的“print(var)”获得。在
谁能给我一个解决方案吗?在
首先,读这个:http://www.joelonsoftware.com/articles/Unicode.html(认真地)
然后,了解Python2有两种不同的数据类型: unicode,表示“不可知”处理所有可能的字符,但不能用于 输入/输出,如“打印”或写入文件,而不是将编码到 其他数据类型:字符串。在
字符串依赖于编码。在
考虑到您的错误消息,
ws4.cell(row=i+k,column=0).value
调用返回的是unicode值。(我不能在我的非windows环境下测试它)-为了确定不是猜测工作,您可能希望在那里运行一次print (type(ws4.cell(row=i+k,column=0).value)
只是为了断言您得到的是unicode值。在{3{当你的后续调用没有编码的时候,{3不告诉你后续的编码错误。在
如果是这样,只需替换
str
调用unicode
:这应该能解决你的问题。我希望你已经读过我上面链接的那篇文章,这篇文章对你很有帮助。在
另外,用您正在使用的相应编码标记您的Python源代码-否则 源代码中的任何非ASCII字符都会出错。在
例如,在代码的第一行写下:
^{pr2}$(尽管对于任何严肃的项目,您应该改用utf-8。)
相关问题 更多 >
编程相关推荐