python:lower()德语变音符号
我在将大写字母与变音符号转换为小写字母时遇到问题。python:lower()德语变音符号
print("ÄÖÜAOU".lower())
A,O和U得到正确的转换,但Ä,Ö和Ü保持大写。有任何想法吗?
第一个问题是固定与.decode( 'UTF-8'),但我仍然有第二个:
# -*- coding: utf-8 -*-
original_message="ÄÜ".decode('utf-8')
original_message=original_message.lower()
original_message=original_message.replace("ä", "x")
print(original_message)
回溯(最近通话最后一个): 文件 “Untitled.py”线4,在 original_message = original_message.replace( “A”, “X”) UnicodeDecodeError错误: 'ASCII' 编解码器不能在位置0解码字节0xc3:在范围序数不(128)
你会需要将其标记为unicode字符串,除非您使用纯ASCII;
> print(u"ÄÖÜAOU".lower())
äöüaou
它在处理变量时的工作原理相同,都取决于分配给变量的类型。
> olle = "ÅÄÖABC"
> print(olle.lower())
ÅÄÖabc
> olle = u"ÅÄÖABC"
> print(olle.lower())
åäöabc
我有# - * - 编码:utf-8 - * - 在第一行,看起来像它的Python版本BlaXpirit建议。 – user2104634 2013-02-24 14:50:39
@ user2104634上面的例子是在Mac OS X上的标准Python 2.7.2上运行的。没有标记为unicode,它只会将ascii字符转换为小写字母,使用'u'标记,它会给出正确的输出。 – 2013-02-24 14:51:57
那么标签在开始时是不够的? – user2104634 2013-02-24 14:54:52
您正在处理编码字符串,而不是使用unicode文本。
字节串的.lower()
方法只能处理ASCII值。解码你的字符串为Unicode或使用unicode
文字(u''
),然后小写:
>>> print u"\xc4AOU".lower()
äaou
@ user2104634:您需要阅读[Python Unicode HOWTO](http://docs.python.org/2/howto/unicode.html);你将该变量解码为一个“unicode”值('variable.decode(encoding')')。 – 2013-02-24 15:00:29
如果你使用的是Python 2,但不希望前缀U“”上您的所有字符串把这个开头你的程序:
from __future__ import unicode_literals
olle = "ÅÄÖABC"
print(olle.lower())
现在将返回:
åäöabc
编码指定如何解释字符从磁盘读入程序控制am,但from __ future __ import语句告诉我们如何在程序本身中解释这些字符串。你可能会需要两个。
你使用的是Python 2还是3? – 2013-02-24 14:46:02
Python 2.7.2 OSX附带的一个。 – user2104634 2013-02-24 14:46:27
@ user2104634这是你的问题。 – 2013-02-24 14:46:53