11

Python 3.3 将该casefold方法添加到 str 类型,但在 2.x 中我什么都没有。解决此问题的最佳方法是什么?

4

3 回答 3

4

查看py2casefold

>>> from py2casefold import casefold
>>> print casefold(u"tschüß")
tschüss
>>> casefold(u"ΣίσυφοςfiÆ") == casefold(u"ΣΊΣΥΦΟσFIæ") == u"σίσυφοσfiæ"
True
于 2015-09-28T21:23:08.587 回答
2

这里有一个帖子涵盖了一些问题(但可能无法解决所有问题),您可以判断它是否适合您的需要。如果这不好,那么这里有一些有用的技巧来实现 W3C 站点上的案例折叠

于 2013-08-16T13:18:07.650 回答
1

如果PyICU已经安装;你可以用它来定义casefold(). 使用与@Russ 答案中相同的示例字符串

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

结果可能取决于 Unicode 标准的版本

于 2015-09-29T08:10:22.037 回答