Я пытаюсь сравнить две строки в python и по какой-то причине они просто не совпадают.Почему эти две строки не равны друг другу?
Я убедился, что нет пробелов, и они оба являются строковыми типами, но все равно не повезло, даже если они точно такие же.
if versions['ksp_version'] is self.version:
Струны как «1.0.2», и я попытался как is
и ==
не повезло.
Есть ли лучший способ сравнить строки в python, которые я просто отсутствую?
EDIT: Еще один контекст.
Итак, я добавил эти строки и распечатал переменные.
print versions['ksp_version']
print type(versions['ksp_version'])
print "===="
print self.version
print type(self.version)
И вот что мы получили.
1.0.2
<type 'str'>
====
1.0.2
<type 'str'>
Исходя из этого, они выглядят одинаково. Оба они были лишены пробелов, используя .strip()
.
Адрес, если вы еще не указали названия этих двух строк. Я просто вижу огромную программу. –
'is' просто плоский вне здесь. Вам все равно, являются ли две строки одним и тем же объектом. Как вы проверяете, что «версии ['ksp_verison']' и 'self.version' идентичны? – chepner
Что сказал Стефан. Если вы ссылаетесь на строку 'if versions ['ksp_version'] is self.version', то' is', конечно, неверно. Это проверяет идентификацию объекта, а не равенство ценности. (Например, это то же самое, что хранится точно в одном и том же месте в памяти компьютера.) –