在Python 3中删除字符串文字前面的'b'字符do

这个问题已经在这里有了答案:

  • 在Python 3中抑制/打印不带b'前缀的字节                                     4个答案

我是python编程的新手,我有点困惑。 我尝试从字符串中获取字节以进行哈希和加密,但是我得到了

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'
Panagiotis Drakatos asked 2020-02-18T03:07:58Z
3个解决方案
116 votes

这应该可以解决问题:

pw_bytes.decode("utf-8")
krock answered 2020-02-18T03:08:55Z
20 votes

解码是多余的

首先,您对这种情况有误解,这是因为对所发生的事情有误解。

您得到了b,因为您已编码为utf-8,现在它是一个字节对象。

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

修正:

  1. 您可以先打印字符串
  2. 编码后冗余解码
Pythonista answered 2020-02-18T03:08:35Z
13 votes

你去

f = open('test.txt','rb+')
ch=f.read(1)
ch=str(ch,'utf-8')
print(ch)
Muhammad Younus answered 2020-02-18T03:09:15Z
translate from https://stackoverflow.com:/questions/37016946/remove-b-character-do-in-front-of-a-string-literal-in-python-3