2013-08-16 15 views

Odpowiedz

2

Istnieje wątek here, który obejmuje niektóre problemy (ale może nie wszystkie rozwiązać), możesz ocenić, czy jest odpowiedni do tego, czego potrzebujesz. Jeśli nie jest to dobre, istnieje kilka przydatnych wskazówek dotyczących wdrażania składania sprawy na stronie W3C here.

3

Sprawdź py2casefold.

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

[Nie wydaje się być bardzo dobrze przetestowane] (https://github.com/rwarren/py2casefold/blob/39a14b8971040b8f6015b7fa1a401c19c121175f/tests/test_casefold.py) – jfs

+0

J.F. Sebastian - co byś dodał? Dla odniesienia [here] (https://hg.python.org/cpython/file/d4669f43d05f/Lib/test/test_unicode.py#l568) jest zasięg testu jednostkowego "str.casefold" Pythona 3. – Russ

+0

Sprawdź, czy uda Ci się wyłowić przydatny test z ['regex: test_case_folding()'] (https://bitbucket.org/mrabarnett/mrab-regex/src/cbdb3caaee9ec68fdc2bff7e30902fb1dbdd3fd7/regex_3/Python/test_regex.py? at = default & fileviewer = file-view-default # test_regex.py-571) – jfs

1

Jeśli PyICU jest już zainstalowany; możesz go użyć do zdefiniowania casefold(). Korzystanie the same example strings as in @Russ' answer:

>>> 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' 

The result may depend on the version of Unicode standard.

Powiązane problemy