如何使用unicode emdash进行字符串格式化?

jlc*_*lin 5 python unicode string-formatting

我正在尝试使用unicode变量进行字符串格式化.例如:

>>> x = u"Some text—with an emdash."
>>> x
u'Some text\u2014with an emdash.'
>>> print(x)
Some text—with an emdash.
>>> s = "{}".format(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 9: ordinal not in range(128)

>>> t = "%s" %x
>>> t
u'Some text\u2014with an emdash.'
>>> print(t)
Some text—with an emdash.
Run Code Online (Sandbox Code Playgroud)

你可以看到我有一个unicode字符串,它打印得很好.问题是当我使用Python的新(和改进的?)format()函数时.如果我使用旧样式(使用%s)一切都很好,但是当我使用{}format()函数时,它失败了.

有关为什么会发生这种情况的任何想法?我使用的是Python 2.7.2.

wut*_*utz 9

format()当你混合ASCII和unicode字符串时,新的并不宽容......所以试试这个:

s = u"{}".format(x)
Run Code Online (Sandbox Code Playgroud)