在if条件中与unicode字符串比较(python)
我就不说我怎么测试代码的了,直接说问题。
在Python中,似乎在if语句中,比较一个分开的unicode字符串和另一个内联的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 !
如果我把'is not'换成'!=',代码就能正常工作了!
有没有人知道为什么用"is"会导致比较失败?
1 个回答
2
这是因为在Python中,字符串是对象——当你对一个字符串进行切片操作时,其实是创建了一个新的字符串。
事情比这稍微复杂一点,但大致就是这个意思。
解决办法是:用 ==
和 !=
来代替 is
和 is not
。