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

Posted

技术标签:

【中文标题】在Python 3中删除字符串文字前面的\'b\'字符do [重复]【英文标题】:Remove 'b' character do in front of a string literal in Python 3 [duplicate]在Python 3中删除字符串文字前面的'b'字符do [重复] 【发布时间】:2016-08-29 06:07:12 【问题描述】:

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

【问题讨论】:

***.com/a/43680634/1236128 【参考方案1】:

这应该可以解决问题:

pw_bytes.decode("utf-8")

【讨论】:

在我的情况下它不起作用。我正在使用python3。 谢谢,它适用于 python 3.7。 @BiratBose:我认为它应该可以工作,你能提供代码和结果吗? @BiratBose,我使用的是 python 3.7,解码对我有用。 适用于 python 3.7.3。谢谢 pw_bytes = pw_bytes.decode("utf-8") 应该可以工作【参考方案2】:

你来了

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

【讨论】:

你引入了一个文件系统对象?为什么? 没看懂,能详细点吗? 我在 Python 3.7.3 中使用它来删除包含 subprocess.check_output() 返回值的 b' ' 并且它可以工作。【参考方案3】:

解码是多余的

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

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

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

修复:

    你可以先打印字符串 编码后冗余解码

【讨论】:

为什么这是公认的答案?就是下面那个。这个话太多了……krock下面的答案就是答案。顺便说一句, str(x) 不会删除 b 第一个没有解释的答案或者你所说的“谈话”是没有用的。仅代码的答案在这里不受欢迎。其次,我没有说 str(x) 删除了 b。 这没有回答问题。 这不是答案! @dsgdfg 仅仅因为您不理解它并不意味着它不是答案。这只是意味着您来到 *** 寻找复制粘贴代码,却不知道自己在做什么,或者试图理解您编写的代码的一小部分。与 50 个字符的 2 个要点列出你是如何搞砸的相比,你想要简单多少?

以上是关于在Python 3中删除字符串文字前面的'b'字符do [重复]的主要内容,如果未能解决你的问题,请参考以下文章

批处理如何去掉/删除文件名中的指定字符

Python基础--字符串处理

Python记录

Python3 字符串前面加u,r,b的含义

python3用正则怎么删除指定字符串前面和后面的内容,只保留中间部分的内容,并存入列表?

为啥在 Python 3.6 alpha 中文字格式的字符串(f 字符串)如此缓慢? (现在在 3.6 稳定版中修复)