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中的对象---当您对字符串进行切片时,您将创建一个新的字符串。
这比这稍微复杂一点,但这就是其中的要点。
解决方法:用