拆下';b';Python3中字符串文本前面的字符do

拆下';b';Python3中字符串文本前面的字符do,python,string,encryption,binary,Python,String,Encryption,Binary,我是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) 输出: prin

我是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'

解码是冗余的

你只是在一开始就犯了这个“错误”,因为对正在发生的事情有误解

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

 >> type("text".encode("utf-8"))
 >> <class 'bytes'>
>键入(“文本”。编码(“utf-8”))
>> 
修复:

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

  • 这应该可以做到:

    pw_bytes.decode("utf-8")
    
    给你

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

    为什么这是公认的答案?就是下面的那个。这是一个太多的话…下面的答案由克罗克是答案。顺便说一句,str(x)不会在没有解释的情况下删除第一个答案,或者正如你所说的,“谈话”是无用的。这里不赞成只使用代码的答案。第二,我没有说str(x)删除了b。这没有回答问题。这不是答案@dsgdfg仅仅因为你不理解它并不意味着它不是一个答案。这只是意味着,您来到stackoverflow寻找复制粘贴代码,却不知道自己在做什么,也不试图理解自己编写的代码中的一点点内容。你想找一个50个字符的2点式项目来详细说明你是怎么搞砸的?你在混合中引入了一个文件系统对象?为什么?我没有得到它,请你详细说明一下。我在Python 3.7.3中使用了它来删除
    b'
    中包含
    子流程返回的值。检查\u output()
    ,它就工作了。在我的情况下,它不工作。我正在使用python3。谢谢,它与python3.7一起工作@BiratBose:我认为应该可以,你能提供代码和结果吗?@BiratBose,我使用的是python 3.7,解码对我来说很有效。适用于python 3.7.3。谢谢
    pw_字节=pw_字节。解码(“utf-8”)
    应该可以工作