带有无效ASCII的字符串上的title()方法

时间:2014-05-06 19:38:09

标签: python non-ascii-characters

我有一个姓氏列表,但格式不正确。每个名字都用cAmEl sTyLe -.-编写 我试图用title()方法让它看起来更干净。

s = 'KroGer'
s = s.title()
print s
>Kroger

这个工作正常。但是当我在名字中有非ascii字母时:

s = 'KRöGer'
s = s.title()
print s
>KröGer

此非ascii之后的字母仍为大写字母。即使我改变了字符串:

s = 'KRöger'
s = s.title()
print s
>KröGer

我仍然得到错误的结果。 为什么它会这样?如何让这个字符串成为'Kröger'?

3 个答案:

答案 0 :(得分:3)

这应该是unicode string

>>> 'KRöger'.title()
'KröGer'
>>> u'KRöGer'.title()
u'Kröger'

编辑:以一个简单的python脚本为例:

# -- coding: utf-8 --
print 'KRöger'.title()  # 'KröGer'
print u'KRöGer'.title()  # 'Kröger'
print 'KRöger'.decode('utf-8').title()  # 'Kröger'

答案 1 :(得分:1)

你可以在标题之前解码UTF 8:

print s.decode('utf-8').title()

答案 2 :(得分:-2)

我终于找到了一种方法来做我想做的事。上帝保佑发电机:

name = 'KRöGer'
name = ' '.join(name[0].upper() + name[1:].lower() for n in name.split())
print name
>>Kröger