Python字符串和unicode对象具有以下用于字符串大小写转换的方法。
upper()
lower()
title()
使用unicode字符串,我几乎可以处理本地字母表中的所有字符:
test_str = u"ças şak ürt örkl"
print test_str.upper()
>> ÇAS ŞAK ÜRT ÖRKL
除了两个字母。由于我住在土耳其,我有典型的Turkish I problem
。
在我的本地字母表中,我们有一封与İ
相似的字母I
,其案例转换必须如下所示
I → lowercase → ı
i → uppercase → İ
是的,它会破坏i --> I
的ASCII转换,因为i
和I
是两个单独的字母。
test_str = u"ik"
print test_str.upper()
>> IK # Wrong! must be İK
test_str = u"IK"
print test_str.lower()
>> ik # Wrong! must be ık
我怎样才能克服这一点?有没有办法使用python内置函数正确处理大小写转换?
答案 0 :(得分:4)
Python目前不支持特定于语言环境的案例折叠,也不支持Unicode SpecialCasing.txt中的其他规则。如果您今天需要,可以从PyICU获取它们。
>>> unicode( icu.UnicodeString(u'IK').toLower(icu.Locale('TR')) )
u'ık'
虽然如果你关心的只是土耳其语I,你可能更喜欢特殊情况。