Python UTF8小写土耳其语特定L

2024-10-01 19:26:30 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python 2.7时:

>myCity = 'Isparta'
>myCity.lower()
>'isparta'
#-should be-
>'ısparta'

试过解码,(比如,我的城市。解码(“utf-8”).lower()),但找不到方法。在

这种字母怎么能放低一点?(“I”>;“ı”、“İ”>;“I”等)

编辑:在土耳其语中,“I”的小写字母是“ı”。“i”的大写字母是“İ”


Tags: 方法gt编辑字母be大写字母解码lower
3条回答

{您应该使用从^派生自unicode的新类}

class unicode_tr(unicode):
    CHARMAP = {
        "to_upper": {
            u"ı": u"I",
            u"i": u"İ",
        },
        "to_lower": {
            u"I": u"ı",
            u"İ": u"i",
        }
    }

    def lower(self):
        for key, value in self.CHARMAP.get("to_lower").items():
            self = self.replace(key, value)
        return self.lower()

    def upper(self):
        for key, value in self.CHARMAP.get("to_upper").items():
            self = self.replace(key, value)
        return self.upper()

if __name__ == '__main__':
    print unicode_tr("kitap").upper()
    print unicode_tr("KİTAP").lower()

给予

^{pr2}$

这一定能解决你的问题。在

您需要使用locale.setLocale()设置正确的语言环境(我猜是tr tr)。否则将使用默认的上下映射,如果默认值为en-US,I的小写版本为i。在

有些人建议使用tr_TR.utf8语言环境。至少在Ubuntu上,可能与this bug有关,设置此区域设置不会产生所需的结果:

import locale
locale.setlocale(locale.LC_ALL, 'tr_TR.utf8')

myCity = u'Isparta İsparta'
print(myCity.lower())
# isparta isparta

因此,如果此错误影响到您,作为解决方法,您可以自己执行此翻译:

^{pr2}$

印刷品

ısparta isparta

相关问题 更多 >

    热门问题