【问题标题】:Identical string return FALSE with '==' in Python, why?相同的字符串在 Python 中返回 FALSE 和 '==',为什么?
【发布时间】:2009-09-29 14:44:03
【问题描述】:

通过套接字连接接收数据字符串。当接收到动作变量将='IDENTIFY'的第一个示例时,它可以工作。但是当接收到第二个例子时,action variable will = 'MSG' 它不会进行比较。

最奇怪的是,当我使用 Telnet 而不是我的套接字客户端时,两者都被成功比较了。但是字符串是相同的......是否有可能字符串的编码方式不同?我怎么知道?

数据示例:

data = 'IDENTIFY 54143'
or
data = 'MSG allo'

action = data.partition(' ')[0]
if action == "MSG":
    self.sendMessage(data)
elif action == "IDENTIFY":  
    self.sendIdentify(data)
else:
    print "false"

【问题讨论】:

    标签: python string-comparison


    【解决方案1】:

    无法重现您的问题。要对其进行调试,请打印或记录dataactionrepr():这可能会向您显示原因(可能一些不可见的二进制字节已潜入data,基于您获取它的方式[[您没有向我们展示]],因此进入action)。

    【讨论】:

    • '\x00MSG Allo' 这就是我得到的。我将尝试找到如何逃脱它。非常感谢! Tks,因为我是 python 新手,所以我不知道 repr()。
    • @plehoux:你可以lstrip这个角色。
    猜你喜欢
    • 2015-07-31
    • 2017-12-14
    • 2016-12-18
    • 2020-08-11
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多