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

Pan*_*tos 51 python string encryption binary

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

b'...'
Run Code Online (Sandbox Code Playgroud)

b字符串前面的字符就像下面的例子一样.有没有办法避免这种情况?.任何人都可以提供解决方案吗?对不起这个愚蠢的问题

import hashlib

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

OUTPUT:

 print b'my secret data'
Run Code Online (Sandbox Code Playgroud)

kro*_*ock 121

这应该做的伎俩:

pw_bytes.decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

  • `pw_bytes = pw_bytes.decode("utf-8")` 应该可以工作 (3认同)

Pyt*_*sta 20

解码是多余的

你首先只有这个"错误",因为误解了正在发生的事情.

你得到的是b因为你编码到utf-8现在它是一个字节对象.

 >> type("text".encode("utf-8"))
 >> <class 'bytes'>
Run Code Online (Sandbox Code Playgroud)

修正:

  1. 您可以先打印字符串
  2. 编码后对其进行冗余解码

  • 为什么这是公认的答案?这是下面的那个.这个是太多的话题了...... krock的答案就是答案.顺便说一下,str(x)不会删除b (15认同)
  • 这并不能回答问题。 (8认同)
  • 没有解释的第一个答案,或者你把它说成"谈话"是没用的.代码只有答案在这里不受欢迎.其次,我没有说str(x)删除了b. (3认同)
  • *这不是答案!* (2认同)

Muh*_*nus 13

你去吧

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

  • 您是否引入了文件系统对象?为什么? (3认同)
  • 我已经在 Python 3.7.3 中使用它来删除包含由 `subprocess.check_output()` 返回的值的 `b' '`,它可以工作。 (2认同)