Python Base64 打印问题
我有一个经过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