gpt4 book ai didi

python - 将 Unicode 字符串转换为 ascii 字符串,然后将其与 ascii 字符串进行比较始终返回 false。 (Python 2.7.6)

转载 作者:行者123 更新时间:2023-12-01 05:31:22 25 4
gpt4 key购买 nike

这似乎是一个简单的问题,但我在任何地方都找不到答案。

我有一个函数,它获取 Unicode 字符串作为参数,如下所示:

def foo(arg):
if str(arg) is 'wxyz':
print 'it is equal'

给定输入 u'wxyz',该函数不会打印任何内容。我做了更多测试,并提出了一个问题。

为什么这不起作用:

>>> u = unicode('wxyz')
>>> str(u) is 'wxyz'
False

但这确实有效:

>>> str(u) == 'wxyz'
True

这是我已经尝试过的:

>>> u = unicode('wxyz')
>>> s = str(u)
>>> a = u.encode('ascii')
>>> type(u)
<type 'unicode'>
>>> type(s)
<type 'str'>
>>> type(a)
<type 'str'>
>>> type('wxyz')
<type 'str'>
>>> u is 'wxyz'
False # Should be False
>>> u == 'wxyz'
False # Should be False
>>> s is 'wxyz'
False # Should be True
>>> s == 'wxyz'
True # Should be True
>>> a is 'wxyz'
False # Should be True
>>> a == 'wxyz'
True # Should be True
>>> u is u'wxyz'
False # Should be True
>>> u == u'wxyz'
True # Should be True

我想我可以将 'is' 更改为 '==',但我一直在代码中的其他地方使用 'is',并且切换到使用 ' 似乎不太像 Python 风格=='。如果有人能帮助我理解这一点,我将非常感激。另外,如果您需要我更具体,请询问。

如果在其他地方有人问过这个问题,我深表歉意。我阅读了有关 Unicode 的 Python 文档,并在这里查找类似的问题,但找不到任何可以回答我的问题的内容。

最佳答案

如果 a 和 b绑定(bind)到同一个对象,则运算符a is b 返回 True。所以 is 是这里使用的错误运算符。这可能意味着您需要修复代码中使用 is 的大部分位置。

a = []
b = a
a is b # true
a == b # true

a = []
b = []
a is b # false
a == b # true

关于python - 将 Unicode 字符串转换为 ascii 字符串,然后将其与 ascii 字符串进行比较始终返回 false。 (Python 2.7.6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com