Python 3.3 thêm phương thức casefold
vào loại str, nhưng trong 2.x tôi không có gì cả. Cách tốt nhất để giải quyết vấn đề này là gì?Tôi làm cách nào để gấp một chuỗi trong Python 2?
Trả lời
Khám phá py2casefold.
>>> from py2casefold import casefold
>>> print casefold(u"tschüß")
tschüss
>>> casefold(u"ΣίσυφοςfiÆ") == casefold(u"ΣΊΣΥΦΟσFIæ") == u"σίσυφοσfiæ"
True
[Dường như nó không được kiểm tra tốt] (https://github.com/rwarren/py2casefold/blob/39a14b8971040b8f6015b7fa1a401c19c121175f/tests/test_casefold.py) – jfs
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
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
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'
bạn có cần xử lý các chuỗi không phải tiếng Anh không? – roippi
Có. Tôi muốn chạy thuật toán gấp unicode. –