Python - 无法编码位置 4 中的字符 u'\u2019':序号不在范围内(256)

use*_*103 -2 python

我有以下字符串:

\n\n

cbBb\xe2\x80\x99

\n\n

最后一个字符是u\'\\u2019\'.

\n\n

我尝试了以下方法:

\n\n
value = "cbBb\xe2\x80\x99"\nvalue.replace(u"\\u2019", "-")\nvalue.encode(\'ascii\', \'ignore\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

但当我尝试这样做时:

\n\n
str(value)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到:

\n\n
can\'t encode character u\'\\u2019\' in position 4: ordinal not in range(256)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我该如何解决这个问题?

\n

Moo*_*awr 5

在 python 2 中,字符串可以是 unicode 或只是常规字符串。replace()你应该通过u在字符串前面添加一个来指定它是一个 unicode 字符串来运行你的

\n\n
value = u\'cbBb\xe2\x80\x99\'\nvalue = value.replace(u"\\u2019", "-")\nvalue.encode(\'ascii\', \'ignore\')\nprint(str(value)) #cbBb-\n
Run Code Online (Sandbox Code Playgroud)\n\n

也不replace()在队列中,您需要将其重新分配给某些东西。

\n\n
\n\n

旁注,您可能需要考虑切换到 Python 3,因为 Python 2 中的 unicode 处理有点麻烦。

\n