2012-03-07 6 views
16

Va bene, mi arrendo. Non riesco a capire il risultato che sto ottenendo dal seguente codice (Python 2.6.6):Errore di uguaglianza delle stringhe in Python. Cosa dà?

message.dest = message.dest.strip() 
print type(message.dest) 
print message.dest 
if message.dest == 'UI': 
    print "Equal!" 
else: 
    print "Not Equal!" 

In qualche modo la mia uscita è:

<type 'str'> 
UI 
Not Equal! 

Tutte le idee su quello che sta succedendo qui?

+8

provare a stampare 'repr (message.dest)'. –

+5

sarebbe bello se i downvoters si preoccupassero di spiegarsi. – Simon

+0

@Simon: vedi la mia risposta, ma in breve: Nessuno sforzo per risolvere il suo problema, questo non può che beneficiare OP, nessun altro. – Marcin

risposta

-2

message.dest non è un oggetto uguale a 'UI'. Questo è ciò che sta accadendo qui.

È possibile stampare il repr di message.dest o esplorare il codice in un debugger, invece di chiedere a Stackoverflow di indovinare quali sono i dati nel programma.

+7

Penso che una certa pedagogia sarebbe gradita nella tua risposta. – Simon

+0

Grazie per il condiscendente "aiuto". – kamek

+0

@Simon Immagino che sia "repr" sia i debugger siano notizie di OP. – Marcin

5

Messaggio inserito da OP nel corpo della domanda. Conversione nella risposta wiki della comunità.

Volevo solo dare un'occhiata a quale fosse il problema nel caso in cui qualcun altro si trovasse in una situazione simile.

Il problema era message.dest avevano un carattere ASCII codificato nella stringa, ad esempio,

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

Personalmente mia confusione derivava principalmente dal fatto che il tipo di oggetto era <type 'str'>. Ciò evidenzia il pericolo di utilizzare le istruzioni print come strumento di debug.