【发布时间】:2019-03-01 02:03:09
【问题描述】:
我有这个代码:
"'{}'".format(u'ES SIOUF_1')
在 Python 2 中运行时,我收到以下错误:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 2: ordinal not in range(128)
从 Python 3 运行的相同代码给出:
>>> "'ES\xa0SIOUF_1'"
我也不需要。我需要的是:
>>> "'ES SIOUF_1'"
我阅读了很多关于 Python 中“编码”和“解码”字符的问题,以及 Python 2 和 3 在这方面的一些差异。
但是,我真的不理解它们,我想可能为两个版本的 Python 解决这个问题。
我注意到的事情是:
type(u'ES SIOUF_1')
给予:
>>> <type 'unicode'> # PYTHON 2
>>> <class 'str'> # PYTHON 3
【问题讨论】:
-
一定是错字(大括号之间有一个额外的字符),因为它对我有用(如果我复制/粘贴你的字符串)。
-
嗯,实际上,它是 "'{}'".format(u'ES SIOUF_1') 所以它是正确的。怎么可能为你工作而不为我工作?
-
好的,这很奇怪....当我将此处编写的代码复制并粘贴到我的 IDE (PyScripter) 中时,我没有收到错误消息。但是,当我从命令历史记录中复制并粘贴相同的代码时,我会收到它。 WinMerge 显示“空白”字符存在差异。但是“在我看来”它们确实是相同的。这是怎么回事????难道是“那个空间”在“复制粘贴”中的类型不同???
标签: python string string-formatting python-unicode unicode-literals