Не сравнивая равно `a == aa`, хотя при печати вывод равен - PullRequest
0 голосов
/ 28 апреля 2018

Я использую Python 2.7. Я пытаюсь сопоставить два значения

У меня есть код, похожий на следующий

a=field [0] ["inv"] ##This is json calling
aa=purchase [11] [0]   
print type(a)
print a
print type(aa)
print aa
if aa==a:
   print "same"
else:
   print "Not same"

когда я выполняю код, я получаю следующий вывод

<type 'str'>
28
<type 'str'>
28
Not same

Почему я получаю этот вывод. У меня совпадающие значения. Но почему я получаю вывод как not same.

В чем проблема?

1 Ответ

0 голосов
/ 28 апреля 2018

Ну, есть символы, которые не отображаются при печати (пробел) и после вашего последнего "нормального" символа: ' ', '\r' '\t' '\n' и другие.

Проверка

if len(aa) != len(a):
    print "Invisible characters - length different" 
    print "'{}' vs '{}'".format(aa,a) 

Использование rstrip() (doku-link) для удаления нежелательных пробелов

if aa.rstrip()==a.rstrip():   # avoid "a" vs "a    " comparing to not equal
    print "same"
else:
    print "Not same"

помогает.

Следующее также помогает: Как отлаживать небольшие программы (# 1)

Демо

a  = "ff   "  # 'invisible' difference
aa = "ff"
print type(a)
print a
print type(aa)
print aa

if len(aa) != len(a):
    print "Invisible characters - length different" 
    print "'{}' vs '{}'".format(aa,a)

if aa.rstrip()==a.rstrip():
   print "same"
else:
   print "Not same"

Выход:

<type 'str'>
ff   
<type 'str'>
ff
Invisible characters - length different
'ff' vs 'ff   ' 
same
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...