Ошибка равенства строк в Python. Что дает?
Хорошо, я сдаюсь. Я не могу понять результат, который я получаю от следующего кода (Python 2.6.6):
message.dest = message.dest.strip()
print type(message.dest)
print message.dest
if message.dest == 'UI':
print "Equal!"
else:
print "Not Equal!"
Как-то мой вывод:
<type 'str'>
UI
Not Equal!
Любые идеи о том, что здесь происходит?
Ответы
Ответ 1
message.dest
не является объектом, равным 'UI'
. Вот что здесь происходит.
Возможно, вы захотите напечатать реестр message.dest
или изучить свой код в отладчике, вместо того чтобы попросить Stackoverflow угадать, какие данные в вашей программе есть.
Ответ 2
Первоначально опубликовано OP в теле вопроса. Преобразован в ответ wiki сообщества.
Я просто хотел следить за тем, что проблема была в случае, если кто-то еще окажется в подобной ситуации.
Проблема заключалась в том, что message.dest
имел символ в ASCII-кодировке в строке, например,
>>> repr(message.dest)
"'\\x00UI'"
>>> print message.dest
UI
Лично моя путаница объяснялась главным образом тем, что тип объекта был <type 'str'>
. Это подчеркивает опасность использования инструкций print
в качестве инструмента для отладки.