【发布时间】:2017-06-03 00:53:54
【问题描述】:
我有一本像这样的字典:
{ u'Samstag & Sonntag': u'Ganztags ge\xf6ffnet', u'Freitag': u'18:00 & 22:00'}
现在我正在尝试将 \xf6 替换为 ö ,
但尝试.replace('\xf6', 'ö') 会返回错误:
UnicodeDecodeError: 'ascii' 编解码器无法在位置解码字节 0xf6 0: 序数不在范围内(128)
我该如何解决这个问题?
【问题讨论】:
-
这很可能是 Python2。但是,如果您标记您的问题或提及您正在使用的 Python 版本,那就太好了。因为Python2和Python3在解码部分差别很大。这个问题是因为默认情况下,unicode 字符串将使用 ASCII 解码进行解码,因为在您的脚本中使用了未定义的编码,并且您在替换调用中将 ASCII 替换为 ASCII。IIRC。
-
您是如何在
u''字符串中以...开头的\xf6结尾的? -
u'\xf6'与u'ö'完全相同:len(u'\xf6')==1;u'\xf6' == u'ö' -
这里的评论都疯了吗?你不需要更换任何东西!
.replace(u'\xf6', u'ö')是空操作。 -
您使用的是什么操作系统?你的终端使用什么编码?
print u'Ganztags ge\xf6ffnet'在您的终端中显示什么?根据您的设置,您可能能够直接打印 Unicode 对象,否则您需要进行适当的编码,例如print u'Ganztags ge\xf6ffnet'.encode('utf8')或print u'Ganztags ge\xf6ffnet'.encode('latin1')。
标签: python python-2.7