Python Base64 打印问题

0 投票
2 回答
913 浏览
提问于 2025-04-16 01:55

我有一个经过base64编码的字符串。

当我用这种方式解码这个字符串时:

>>> import base64
>>> base64.b64decode("XH13fXM=")
'\\}w}s'

输出结果是正常的。

但是当我用这种方式时:

>>> d = base64.b64decode("XH13fXM=")
>>> print d
\}w}s

有些字符缺失了。

有没有人能给点建议?

提前谢谢大家。

2 个回答

1

当你用 print 打印一个字符串时,字符串里的字符会被显示出来。但是,当你在交互式命令行中查看你最后一条语句的结果时,它显示的是这个字符串的 __repr__,而不是字符串本身。这就是为什么它周围有单引号,并且你的反斜杠被转义了。

在你的第二个例子中,没有任何字符是缺失的,那就是你字符串里的5个字符。第一个例子中添加了一些字符,使输出变成一个合法的Python字符串字面量。

如果你想用print语句,并且让输出看起来像第一个例子那样,可以使用:

print repr(d)
3

这只是展示方式的问题:

>>> '\\}w}s'
'\\}w}s'
>>> print(_, len(_))
\}w}s 5

这个字符串有5个字符。当你在代码中使用它时,需要对反斜杠进行转义,或者使用原始字符串字面量:

>>> r'\}w}s'
'\\}w}s'
>>> r'\}w}s' == '\\}w}s'
True

撰写回答