大写转换在特殊字符上无效 - Python

3

我一直在尝试将许多字符串大写,但其中一些以utf-8字符开头。

问题是它们无法大写!

mystring = 'lucas'
mystring.capitalize() # returns 'Lucas'

mytring = 'æthelred'
mystring.capitalize() # returns 'æthelred'

对于包含 `´^¨ 和字符 ð、þ 等的元音字母,解决方法与上述相同。
我该怎么办才能解决这个问题?

实际上,我无法访问字符串,我是从其他地方获取的,例如文本文件...


1
mystring.decode("utf-8").capitalize() - Padraic Cunningham
2个回答

5
你没有包含字母 u。在 Python 中,字符串需要定义为 Unicode 类型!
>>> mytring = u"æthelred"
>>> print mytring.capitalize()
Æthelred

python 3 中,默认情况下字符串是 unicode 的,所以不需要使用 u

>>> "æthelred".capitalize()
'Æthelred'

2
这个回答对于 Python 2.x 是正确的。在 Python 3.x 中,默认情况下字符串是Unicode,因此Leandro的代码应该可以正常工作。 - stochastic
1
@stochastic 是的,谢谢提醒!我会更新答案。 - Mazdak
当一个字符串已经在变量中时,如何将其定义为Unicode?抱歉,我还很新手。 - Leandro Lyra
@LeandroLyra 只需使用 unicode 函数:>>> unicode('abc') u'abc' - Mazdak

2
如果您正在使用Python 2,这也可以正常工作。在您的文件顶部添加以下内容:
from __future__ import unicode_literals

这将强制将字符串作为Python 3中的行为处理,使它们默认情况下成为Unicode编码。

这似乎不起作用,有几个东西无法以这种方式解码。我还在文件开头声明了utf-8,这不应该是问题。 - Leandro Lyra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接