Python字符串分号转换

标签 python python-2.7 unicode

我的字符串是

u'3.4\xa2 / each'

'\xa2' 是“分”符号,我想这样显示。

我试过了

i= "3.4\xa2 / each"
print unicode(i, errors='replace')

在结果中,分符号显示为实心圆圈内的问号。

我也试过

i= "3.4\xa2 / each"
print i.encode('utf-8')

我明白了

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa2 in position 3: ordinal not in range(128)

那么实现这一目标的正确方法是什么?

最佳答案

'\xa2' 是一个字节。它可能被解释为分符号,但前提是您指定了正确的编解码器。通过指定正确的编解码器,您可以将其解码为等效的 Unicode 代码点。 Latin-1 可以:

>>> print '\xa2'.decode('latin1')
¢

有一个整体series of encodings但是,将 ¢ cent 代码点编码为 A2。

或者,以 Unicode 字符串开头。 Unicode 字符串表达式中的 \xa2\u00a2 相同,恰好是正确的代码点:

>>> print u'\xa2'
¢
>>> print u'\u00a2'
¢

这是因为 Unicode 标准的前 256 个代码点恰好符合 Latin-1 (ISO-8859-1) 标准。

您可能无法打印;如果您使用的是终端或控制台,print 应该自动编码 Unicode 数据以匹配您的终端或控制台配置,但这可能并不总是正确的或设置为可以处理字符的编解码器你正在尝试打印!

请注意,我已解码。如果您编码,Python 会尝试提供帮助并首先将字节解码为 Unicode 对象,以便随后对其进行编码。因为 \xa2 不是有效的 ASCII 字节,所以解码失败。

你可能想阅读:

在继续之前。

关于Python字符串分号转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486474/

相关文章:

python - 如何删除字符串后面的所有标点符号?

python - (长)从列表中的字符串中删除单引号

python - urllib和 “SSL: CERTIFICATE_VERIFY_FAILED”错误

Python 2.7 Unicode/IDLE 混淆

Python Unicode 编码错误

python - 使用 Scipy 与 Matlab 拟合对数正态分布

python - resource 可选参数,用于检索 Flask Restful 上的所有数据

python - 用备用值替换 Python 字符串中的 "tokens"

python - 如何获取Popen中的shell变量值

c# - 在 C#/VB 中使用 Windows API 结构的 Ansi 和 Unicode 版本的简单方法