Ошибка равенства строк в Python. Что дает? - программирование
Подтвердить что ты не робот

Ошибка равенства строк в 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!

Любые идеи о том, что здесь происходит?

4b9b3361

Ответ 1

message.dest не является объектом, равным 'UI'. Вот что здесь происходит.

Возможно, вы захотите напечатать реестр message.dest или изучить свой код в отладчике, вместо того чтобы попросить Stackoverflow угадать, какие данные в вашей программе есть.

Ответ 2

Первоначально опубликовано OP в теле вопроса. Преобразован в ответ wiki сообщества.

Я просто хотел следить за тем, что проблема была в случае, если кто-то еще окажется в подобной ситуации.

Проблема заключалась в том, что message.dest имел символ в ASCII-кодировке в строке, например,

>>> repr(message.dest)
"'\\x00UI'"
>>> print message.dest
UI

Лично моя путаница объяснялась главным образом тем, что тип объекта был <type 'str'>. Это подчеркивает опасность использования инструкций print в качестве инструмента для отладки.