Проблема печати Python Base64 - PullRequest
0 голосов
/ 27 июля 2010

У меня есть строка в кодировке base64

Когда я декодирую строку таким образом:

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

Вывод в порядке.

Но когда я использую это так:

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

отсутствуют некоторые символы

Кто-нибудь может посоветовать?

Спасибо заранее.

Ответы [ 2 ]

3 голосов
/ 27 июля 2010

Это просто вопрос презентации:

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

В этой строке 5 символов. Когда вы используете его в коде, вам нужно избегать обратной косой черты или использовать необработанные строковые литералы:

>>> r'\}w}s'
'\\}w}s'
>>> r'\}w}s' == '\\}w}s'
True
1 голос
/ 27 июля 2010

Когда вы print строка, символы в строке выводятся.Когда интерактивная оболочка показывает вам значение вашего последнего оператора, она печатает __repr__ строки, а не саму строку.Вот почему вокруг него заключены одинарные кавычки, а обратный слеш экранирован.

Во втором примере нет пропущенных символов, это 5 символов в вашей строке.В первом примере были добавлены символы, чтобы сделать вывод допустимым строковым литералом Python.

Если вы хотите использовать оператор print и сделать вывод похожим на первый пример, используйте:

print repr(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...