Как я могу сбросить строку в Python 2?

Python 3.3 добавляет метод casefold к типу str, но в 2.x у меня ничего нет. Какой лучший способ обойти это?

Ответы

Ответ 1

Отъезд py2casefold.

>>> from py2casefold import casefold
>>> print casefold(u"tschüß")
tschüss
>>> casefold(u"ΣίσυφοςfiÆ") == casefold(u"ΣΊΣΥΦΟσFIæ") == u"σίσυφοσfiæ"
True

Ответ 2

Здесь есть поток , который охватывает некоторые из проблем (но может не разрешить все), вы можете судить, подходит ли он для того, что вам нужно. Если это нехорошо, тогда есть несколько полезных советов для реализации фальсификации событий на сайте W3C здесь.

Ответ 3

Если PyICU уже установлен; вы можете использовать его для определения casefold(). Используя те же строки примера, что и в ответе @Russ:

>>> import icu
>>> casefold = lambda u: unicode(icu.UnicodeString(u).foldCase())
>>> print casefold(u"tschüß")
tschüss
>>> casefold(u"ΣίσυφοςfiÆ") == casefold(u"ΣΊΣΥΦΟσFIæ") == u"σίσυφοσfiæ"
True
>>> icu.UNICODE_VERSION
'6.3'
>>> import unicodedata
>>> unicodedata.unidata_version
'5.2.0'

Результат может зависеть от версии стандарта Unicode.