我有一个姓氏列表,但格式不正确。每个名字都用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'?
答案 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