我花了大约四个小时研究“UnicodeWarning:Unicode 不平等比较”问题。通常,几个小时后,我就能自己回答最棘手的问题,但这里不是这样。当然,我指的是我自己的“棘手”。 ;-)
我知道类似的问题在网上和这个网站上都有答案,但是太菜鸟无法很好地理解答案对我一点帮助都没有。也许对我来说最好的方法就是让别人指出我的代码中需要更改的地方。
我在 Windows XP 上使用 Python 2.5。
我想出了什么
我知道我的问题与我试图比较苹果和橙子(或 Unicode 和 ASCII,或类似的东西,比如字节)有关。我不知道的是解决这个问题的实用方法。
这是我的代码:
# coding: iso-8859-1
import sys
from easygui import *
actual_answer = "pureté"
answer_given = enterbox("Type your answer!\n\nHint: 'pureté'")
if answer_given == actual_answer:
msgbox("Correct! The answer is 'pureté'")
else:
msgbox("Bug!")
这是我收到的错误消息:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
最佳答案
首先,阅读:http://www.joelonsoftware.com/articles/Unicode.html
然后 - 在任何系统中处理 Python 时,你都不应该真正使用 iso-8859-1
编码 - 请改用 utf-8
。
第三,您的 easygui
组件返回给您一个 unicode 对象而不是一个字节串。在上面的代码中解决这个问题的最简单方法是使 actual_answer
变量成为一个 unicode 对象,但在引号前加上“u”前缀,例如:
actual_answer = u"pureté"
关于python - 如何解决 UnicodeWarning 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309954/