【发布时间】:2013-08-18 17:28:21
【问题描述】:
Python 3.3 将 casefold 方法添加到 str 类型,但在 2.x 中我什么都没有。解决此问题的最佳方法是什么?
【问题讨论】:
-
你需要处理非英文字符串吗?
-
是的。我想运行 unicode 大小写折叠算法。
标签: python unicode python-2.x
Python 3.3 将 casefold 方法添加到 str 类型,但在 2.x 中我什么都没有。解决此问题的最佳方法是什么?
【问题讨论】:
标签: python unicode python-2.x
查看py2casefold。
>>> from py2casefold import casefold
>>> print casefold(u"tschüß")
tschüss
>>> casefold(u"ΣίσυφοςfiÆ") == casefold(u"ΣΊΣΥΦΟσFIæ") == u"σίσυφοσfiæ"
True
【讨论】:
str.casefold 单元测试的范围。
regex:test_case_folding()找到一个有用的测试
如果PyICU已经安装;你可以用它来定义casefold()。使用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'
【讨论】: