How do I case fold a string in Python 2?

后端 未结 3 971
情话喂你
情话喂你 2020-12-16 01:00

Python 3.3 adds the casefold method to the str type, but in 2.x I don\'t have anything. What\'s the best way to work around this?

相关标签:
3条回答
  • 2020-12-16 01:28

    If PyICU is already installed; you could use it to define casefold(). Using 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.

    0 讨论(0)
  • 2020-12-16 01:32

    Check out py2casefold.

    >>> from py2casefold import casefold
    >>> print casefold(u"tschüß")
    tschüss
    >>> casefold(u"ΣίσυφοςfiÆ") == casefold(u"ΣΊΣΥΦΟσFIæ") == u"σίσυφοσfiæ"
    True
    
    0 讨论(0)
  • 2020-12-16 01:36

    There is a thread here which covers some of the issues (but may not resolve all), you can judge whether it is suitable for what you need. If this is no good then there are some useful tips for implementing case folding on the W3C site here.

    0 讨论(0)
提交回复
热议问题