python – 更改包含重音符和本地字母的unicode字符串中的字母大小写

前端之家收集整理的这篇文章主要介绍了python – 更改包含重音符和本地字母的unicode字符串中的字母大小写前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Python字符串和unicode对象具有以下用于字符串大小写转换的方法.

>上()
> lower()
>标题()

使用unicode字符串,我可以处理本地字母表中的几乎所有字符:

test_str = u"ças şak ürt örkl"
print test_str.upper()
>> ÇAS ŞAK ÜRT ÖRKL

除了两个字母.由于我住在土耳其,我有典型的Turkish I problem.

在我当地的字母表中,我们有一封与我类似的字母İ,他们的案例转换必须如下

我→小写→ı

我→大写→İ

是的,它破坏了i – >的ASCII转换.因为我和我是两个单独的信件.

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内置函数正确处理大小写转换?

最佳答案
Python目前不支持特定于语言环境的案例折叠,也不支持Unicode SpecialCasing.txt中的其他规则.如果您今天需要它,您可以从PyICU获得它们.

>>> unicode( icu.UnicodeString(u'IK').toLower(icu.Locale('TR')) )
u'ık'

虽然如果你关心的只是土耳其语I,你可能更喜欢特殊情况.

猜你在找的Python相关文章