Проверка подстрок с диакритическими знаками в строках

Я тестирую в Python, если определенная строка содержит что-то вроде следующего

if substr in str:
  do_something()

Проблема в том, что substr содержит буквы с диакритическими знаками и другие необычные символы. Как бы вы порекомендовали делать тесты с такими буквами?

благодарю вас


person xralf    schedule 20.09.2011    source источник
comment
возможно, обновите свой вопрос примером, чтобы продемонстрировать проблему?   -  person Fredrik Pihl    schedule 20.09.2011
comment
@Fredrik: правильный пример - в ответе Рафаля.   -  person xralf    schedule 20.09.2011
comment
но, как утверждает @Rafal, это просто работает. что у вас не работает?   -  person Fredrik Pihl    schedule 20.09.2011


Ответы (2)


Я не знаю каких-либо проблем, характерных для диакритических знаков в Python. Для меня работает следующее:

 u"ł" in u"źdźbło"
 >>> True

Редактировать:

u"ł" in u"źdźblo"
>>> False 

Совпадение точное. Если вам нужно сопоставление без учета диакритических знаков, укажите это в своем вопросе и посмотрите ответ Фредрика.

Edit2: Да, для строковых литералов, содержащих символы, отличные от ascii, вам необходимо указать кодировку в исходном файле. Что-то вроде этого должно работать:

# coding: utf-8
person Rafał Dowgird    schedule 20.09.2011
comment
Даугерд: А что, если я захочу проверить in title? можно я напишу in u"title? - person xralf; 20.09.2011
comment
это пишет SyntaxError: Non-ASCII character '\xc5' in file fds on line 67, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details - person xralf; 20.09.2011

Используйте решение, описанное в этом Опубликуйте, чтобы удалить все диакритические знаки перед тестированием.

person Fredrik Pihl    schedule 20.09.2011