Помогает опубликовать полный пример, иллюстрирующий проблему, а также версию Python, которую вы используете. Например, print(w)
обычно подразумевает Python 3, но работает и в Python 2.
Я воспроизвел вашу ошибку с помощью следующего кода на Python 2.7. Обратите внимание, что строка coding
объявляет исходный файл с кодировкой , поэтому файл должен быть сохранен как UTF-8 из редактора, который его поддерживает.
#coding=utf8
w = u'ה.'
if w == "ה.":
print (w)
Результат:
C:\y.py:3: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
if w == "ה.":
Проблема возникает при сравнении строк Unicode со строками байтов. Python пытается привести строку байтов к строке Unicode, используя кодек «ascii» по умолчанию, строка байтов фактически кодируется в UTF-8 в соответствии с кодировкой источника. Обязательно сравнивайте строки Unicode со строками Unicode и байтовые строки со строками байтов:
Чтобы исправить, пометьте строку как Unicode:
if w == u"ה.":