在Python中打印转义Unicode

2024-10-01 11:39:38 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> s = 'auszuschließen'
>>> print(s.encode('ascii', errors='xmlcharrefreplace'))
b'auszuschließen'
>>> print(str(s.encode('ascii', errors='xmlcharrefreplace'), 'ascii'))
auszuschließen

有没有更好的方法来打印没有b''的字符串?在

编辑:

我只是想打印Python中的转义字符,我唯一抱怨的是Python在打印时添加了“b”。在

如果我想在像Windows 7这样的哑终端上看到真实的角色,那么我得到的是:

^{pr2}$

Tags: 方法字符串终端角色编辑windowsasciiencode
3条回答
>>> s='auszuschließen…'
>>> s
'auszuschließen…'
>>> print(s)
auszuschließen…
>>> b=s.encode('ascii','xmlcharrefreplace')
>>> b
b'auszuschließen…'
>>> print(b)
b'auszuschließen…'
>>> b.decode()
'auszuschließen…'
>>> print(b.decode())
auszuschließen…

从Unicode字符串开始。将其编码为ascii将创建一个具有所需字符的bytes对象。Python在不将其转换回字符串的情况下不会打印它,默认的转换将放入b和引号中。使用decode显式地将其转换回一个字符串;默认编码是utf-8,而且由于您的bytes只包含utf-8的子集{},因此它可以保证工作。在

要查看用于调试的ascii表示(如Python 2上的repr()),请执行以下操作:

print(ascii('auszuschließen…'))
# -> 'auszuschlie\xdfen\u2026'

要打印字节:

^{pr2}$

不是所有的终端都能处理超过8位的字符集,这是真的。但不管你做什么他们都不会处理的,真的。在

如果您的操作系统正确设置了终端,那么打印Unicode字符串将产生可能的最佳结果,这意味着终端无法打印的字符将被替换为某些字符,例如问号或类似字符。你自己翻译并不能真正改善事情。在

更新:

因为您想知道字符串中有哪些字符,所以实际上需要知道它们的Unicode代码,或者在本例中是XML的等价物。这比打印更容易检查,而且通常b''部分本身就不是问题。在

但你可以像这样轻松地摆脱它:

print(repr(s.encode('ascii', errors='xmlcharrefreplace'))[2:-1])

相关问题 更多 >