python - python2中的string.decode()函数

标签 python python-2.7

所以我正在将一些代码从 python2 转换为 python3。我对 python2 编码/解码功能的了解不足以确定我应该在 python3 中做什么

在python2中,我可以做以下事情:

>>> c = '\xe5\xb8\x90\xe6\x88\xb7'
>>> print c
帐户
>>> c.decode('utf8')
u'\u5e10\u6237'

我刚才在那里做了什么? 'u' 前缀不是表示 unicode 吗? utf8 不应该是 '\xe5\xb8\x90\xe6\x88\xb7' 因为这是我首先输入的内容?

最佳答案

您的变量 c 未声明为 unicode(带有前缀“u”)。如果您使用“latin1”编码对其进行解码,您将得到相同的结果:

>>> c.decode('latin1')
u'\xe5\xb8\x90\xe6\x88\xb7'

请注意,decode的结果是一个unicode字符串:

>>> type(c)
<type 'str'>
>>> type(c.decode('latin1'))
<type 'unicode'>

如果将 c 声明为 unicode 并保留相同的输入,则不会打印相同的字符:

>>> c=u'\xe5\xb8\x90\xe6\x88\xb7'
>>> print c
å¸æ·

如果您使用输入“\u5e10\u6237”,您将打印初始字符:

>>> c=u'\u5e10\u6237'
>>> print c
帐户

编码和解码只是使用对应值<->字符的表。问题是,根据使用的编码(即表),相同的值不会呈现相同的字符。

主要困难是当您不知道必须处理的输入字符串的编码时。有些工具可以尝试猜测它,但并不总是成功(请参阅 https://superuser.com/questions/301552/how-to-auto-detect-text-file-encoding )。

关于python - python2中的string.decode()函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38330354/

相关文章:

python - ApiError:不正确的用户名或密码YouTube帐户身份验证错误

python - 记录 mpi4py 子文件

python - 每次点击 API 端点时如何加载 WTF 表单类

python scrapy parse()函数,返回值返回到哪里?

python - 使用 Numba 处理 pandas DataFrame 时间序列的有效方法

python - 用于输出到文件的密码生成器

python - 如果模拟 dict,则在 python 中为 __getitem__() 对象子类化的正确方法

python-2.7 - 科学Python和scipy之间的区别?

python - 在 tkinter 中设置字体返回错误

python - pandas - 如何合并 DataFrame 中的选定行