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.