J'essaie de formater la chaîne avec une variable Unicode. Par exemple:
>>> 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.
3 Réponses :
Le nouveau format () code> n'est pas aussi pardonnant lorsque vous mélangez des chaînes ASCII et UNICODE ... Essayez donc ceci: s = u"{}".format(x)
Bien que cela ait du sens, cela agace que l'ancien % code> s'occupe de cela plus facilement. Explicit, implicite, Yada Yada, mais toujours irritant.
En utilisant Python V3.8.2, il semble que le «U» n'est pas nécessaire.
de la même manière.
>>> s = u"{0}".format(x)
>>> s
u'Some text\u2014with an emdash.'
Utiliser les suivants a bien fonctionné pour moi. C'est une variante sur les autres réponses.
>>> emDash = u'\u2014'
>>> "a{0}b".format(emDash)
'aâb'
Vous devriez être très prudent sur Windows, car si vous produisez sur la console, vous pouvez obtenir une exception comme celle-ci de toute façon.