2013-08-16 43 views

Trả lời

2

Có một chủ đề here bao gồm một số vấn đề (nhưng không giải quyết được tất cả), bạn có thể đánh giá xem nó có phù hợp với những gì bạn cần không. Nếu điều này là không tốt thì có một số lời khuyên hữu ích để thực hiện trường hợp gấp trên trang web W3C here.

3

Khám phá py2casefold.

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

[Dường như nó không được kiểm tra tốt] (https://github.com/rwarren/py2casefold/blob/39a14b8971040b8f6015b7fa1a401c19c121175f/tests/test_casefold.py) – jfs

+0

J.F. Sebastian - bạn sẽ thêm gì? Để tham khảo, [ở đây] (https://hg.python.org/cpython/file/d4669f43d05f/Lib/test/test_unicode.py#l568) là mức độ thử nghiệm đơn vị 'str.casefold' của python 3. – Russ

+0

xem bạn sẽ quản lý để tìm ra một bài kiểm tra hữu ích từ ['regex: test_case_folding()'] (https://bitbucket.org/mrabarnett/mrab-regex/src/cbdb3caaee9ec68fdc2bff7e30902fb1dbdd3fd7/regex_3/Python/test_regex.py? tại = mặc định & fileviewer = file-view-default # test_regex.py-571) – jfs

1

Nếu PyICU đã được cài đặt; bạn có thể sử dụng nó để xác định casefold(). Sử dụng 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.