与if-condition中的unicode字符串比较(python)

时间:2011-06-06 20:26:09

标签: python if-statement unicode-string

  

可能重复:
  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 !

如果我改变'不是'!=代码工作正常!

有谁知道为什么“是”导致比较失败?

1 个答案:

答案 0 :(得分:3)

这是因为字符串是Python中的对象---当你对字符串进行切片时,你会创建一个新字符串。

它稍微复杂一点,但这是它的要点。

解决方案:使用==!=代替isis not