我如何在Python 2中折叠字符串?

时间:2013-08-16 10:21:56

标签: python unicode python-2.x

Python 3.3将casefold方法添加到str类型,但在2.x中我没有任何内容。解决这个问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

查看py2casefold

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

答案 1 :(得分:2)

有一个线程here涵盖了一些问题(但可能无法解决所有问题),您可以判断它是否适合您的需要。如果这不好,那么在W3C网站here上实施案例折叠有一些有用的提示。

答案 2 :(得分:1)

如果已安装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'

The result may depend on the version of Unicode standard