Подтвердить что ты не робот

Удалить символ 'b' перед строковым литералом в Python 3

Я новичок в программировании на питоне, и я немного смущен. Я пытаюсь получить байты из строки в хэш и зашифровать, но я получил

b'...'

b перед строкой, как в приведенном ниже примере. Есть ли способ избежать этого? Может ли кто-нибудь дать решение? Извините за этот глупый вопрос

import hashlib

text = "my secret data"
pw_bytes = text.encode('utf-8')
print('print',pw_bytes)
m = hashlib.md5()
m.update(pw_bytes)

ВЫВОД:

 print b'my secret data'
4b9b3361

Ответ 1

Декодирование избыточно

У вас была только эта "ошибка" в первую очередь из-за непонимания происходящего.

Вы получаете b потому что вы закодированы в utf-8 и теперь это объект байтов.

 >> type("text".encode("utf-8"))
 >> <class 'bytes'>

Исправления:

  1. Вы можете просто напечатать строку сначала
  2. Излишне декодировать его после кодирования

Ответ 2

Это должно сделать трюк:

pw_bytes.decode("utf-8")

Ответ 3

Здесь u Go

f = open('test.txt','rb+')
ch=f.read(1)
ch=str(ch,'utf-8')
print(ch)