关于if语句:在if条件(python)中与unicode字符串的比较

Comparison with unicode string in if-condition (python)

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python '==' vs 'is' comparing strings, 'is' fails sometimes, why?

我将跳过我告诉您如何测试代码的部分,直接跳到问题上来。

在if语句中,将unicode字符串拆分为另一个内联unicode字符串时,python似乎遇到了一些问题。

1
2
3
4
5
6
7
8
9
10
>>>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

这是我的实际代码片段

1
2
>>>if zone[-1:] is not u'.':
>>>    #this line will always run !

如果我把"不是"改成!=代码工作正常!

有人知道为什么"是"导致比较失败吗?


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

这比这稍微复杂一点,但这就是其中的要点。

解决方法:用==!=代替isis not