gpt4 book ai didi

python - UnicodeEncodeError : 'ascii' codec can't encode character u'\u2013' in position 3 2: ordinal not in range(128)

转载 作者:IT老高 更新时间:2023-10-28 21:36:17 33 4
gpt4 key购买 nike

我正在使用 xlrd 解析 XSL 文件。大多数事情都运行良好。我有一本字典,其中键是字符串,值是字符串列表。所有的键和值都是 Unicode。我可以使用 str() 方法打印大部分键和值。但是有些值有 Unicode 字符 \u2013 我得到了上述错误。

我怀疑这种情况正在发生,因为这是嵌入在 Unicode 中的 Unicode,Python 解释器无法对其进行解码。那么我该如何摆脱这个错误呢?

最佳答案

你也可以打印 Unicode 对象,你不需要在它周围做 str()。

假设你真的想要一个 str:

当您执行 str(u'\u2013') 时,您正在尝试将 Unicode 字符串转换为 8 位字符串。为此,您需要使用编码,即 Unicode 数据到 8 位数据之间的映射。 str() 所做的是使用系统默认编码,在 Python 2 下是 ASCII。 ASCII 仅包含 Unicode 的前 127 个代码点,即\u0000 到\u007F1。结果是您收到上述错误,ASCII 编解码器只是不知道\u2013 是什么(顺便说一句,它是一个长破折号)。

因此,您需要指定要使用的编码。常见的是 ISO-8859-1,最常被称为 Latin-1,它包含 256 个第一个代码点; UTF-8,它可以使用可变长度编码对所有代码点进行编码,Windows上常见的CP1252以及各种中文和日文编码。

你可以这样使用它们:

u'\u2013'.encode('utf8')

结果是一个包含字节序列的 str,该字节序列是相关字符的 uTF8 表示:

'\xe2\x80\x93'

你可以打印它:

>>> print '\xe2\x80\x93'

关于python - UnicodeEncodeError : 'ascii' codec can't encode character u'\u2013' in position 3 2: ordinal not in range(128),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5387895/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com