Python: неожиданный результат сравнения строк: True! = True - PullRequest
0 голосов
/ 21 января 2019

Я исследовал эту проблему в SO, но не смог найти похожую.

Вот моя проблема: у меня есть JSON-строка, которую я сериализирую, как это

data = json.loads(data)
attr = data['data']

В этом наборе данных есть два атрибута, давайте назовем их @ attr1 и @ attr2.Вот мой тестовый код, чтобы показать проблему:

print('///')
print(attr['@attr1'])  # where attr['@attr1'] is a string and either 'True' (sometimes also 'true') or 'False'
print('+++')
print(attr['@attr2']) # where attr['@attr2'] is a string and either '1' or '0'
print('///')

if attr['@attr1'] == 'True' or attr['@attr1'] == 'true':
    print('As True:')
    print(attr['@attr1'])
else:
    print('As NOT True:')
    print(attr['@attr1'])
if attr['@attr2'] == '1':
    print('As 1:')
    print(attr['@attr2'])
else:
    print('As NOT 1:')
    print(attr['attr2'])

Вывод этого скрипта:

# OUTPUT:

///
True
+++
1
///
As NOT True:
True
As NOT 1:
1

Process finished with exit code 0

Чего мне здесь не хватает?

1 Ответ

0 голосов
/ 21 января 2019

Сначала, если все, проверьте тип атрибутов, например, print(type(data[...])).Возможно, ваши данные логические True и целые числа 1.

Если типы отличаются от str, результат сравнения будет False, потому что python не выполняет типприведение / принуждение неявно (в отличие, скажем, от JS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...