繁体   English   中英

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

[英]Changing case of letters in unicode string containing accent and local letters

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转换,因为iI是两个单独的字母。

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,但您可能更喜欢对其进行特殊处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM