在if条件中与unicode字符串比较(python)

1 投票
1 回答
2891 浏览
提问于 2025-04-16 19:03

可能重复的问题:
Python中的'=='和'is'比较字符串时,'is'有时会失败,为什么?

我就不说我怎么测试代码的了,直接说问题。

在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中,字符串是对象——当你对一个字符串进行切片操作时,其实是创建了一个新的字符串。

事情比这稍微复杂一点,但大致就是这个意思。

解决办法是:用 ==!= 来代替 isis not

撰写回答