可能重复:
Python '==' vs 'is' comparing strings, 'is' fails sometimes, why?
我将跳过我告诉你我如何测试代码并直接解决问题的部分。
Python似乎在将一个unicode字符串拆分为if语句中的另一个内联unicode字符串时遇到了一些问题。
>>>zone = u'domain.com.'
>>>zone[-1:]
u'.'
>>>u'.' is u'.' #works fine
True
>>> z[-1:] == u'.' #works fine
True
>>> zone[-1:] is u'.' # FAILS !
False
这是我的实际代码段
>>>if zone[-1:] is not u'.':
>>> #this line will always run !
如果我改变'不是'!=代码工作正常!
有谁知道为什么“是”导致比较失败?
答案 0 :(得分:3)
这是因为字符串是Python中的对象---当你对字符串进行切片时,你会创建一个新字符串。
它稍微复杂一点,但这是它的要点。
解决方案:使用==
和!=
代替is
和is not
。