从 Python 中的字符串中删除 ‘b’ 前缀

从 Python 中的字符串中删除 ‘b’ 前缀

Remove the ‘b’ prefix from a string in Python

使用该bytes.decode()方法通过将b前缀转换为字符串来从字节对象中删除前缀。decode()方法将返回从给定字节对象解码的字符串,并将删除b前缀。

主程序
my_bytes = 'bobbyhadz.com'.encode('utf-8') print(my_bytes) # 👉️ b'bobbyhadz.com' print(type(my_bytes)) # 👉️ <class 'bytes'> string = my_bytes.decode('utf-8') print(string) # 👉️ bobbyhadz.com print(type(string)) # 👉️ <class 'str'>

字节对象总是以 为前缀b'',因此要删除前缀,我们必须将字节转换为字符串。

bytes.decode
方法返回从给定字节解码的字符串
默认编码是
utf-8.

相反,
str.encode方法将字符串的编码版本作为字节对象返回。默认编码是utf-8.

主程序
my_bytes = 'bobbyhadz.com'.encode('utf-8') print(my_bytes) # 👉️ b'bobbyhadz.com' string = my_bytes.decode('utf-8') print(string) # 👉️ bobbyhadz.com
编码是将 a 转换string对象的过程,解码是将对象转换为 a的过程 bytes bytesstring

换句话说,您可以使用str.encode()方法从str
bytesbytes.decode()bytesstr

或者,您可以使用str()该类。

使用 str() 从字符串中删除 ‘b’ 前缀

使用str()该类从字节对象中删除b前缀,例如
string = str(my_bytes, encoding='utf-8'). 该类将通过将字节对象转换为字符串来str()删除
前缀。
b

主程序
my_bytes = bytes('bobbyhadz.com', encoding='utf-8') print(my_bytes) # 👉️ b'bobbyhadz.com' print(type(my_bytes)) # 👉️ <class 'bytes'> string = str(my_bytes, encoding='utf-8') print(string) # 👉️ bobbyhadz.com print(type(string)) # 👉️ <class 'str'>

str类返回给定对象的字符串版本。如果未提供对象,则该类返回一个空字符串。

使用
bytes类的语法是相同的。该类返回一个字节对象,因此b添加了前缀。

我们utf-8在示例中使用了编码。编码能够在 Unicode 中编码超过一百万个有效字符代码点。 utf-8


您可以在官方文档的
此表中查看所有标准编码

一些常见的编码是ascii,latin-1utf-32.

解码字节对象时,我们必须使用与将字符串编码为字节对象相同的编码。

如果出于某种原因,您需要以b一种怪异的方式删除前缀,请尝试使用repr()带有字符串切片的函数。

主程序
my_bytes = bytes('bobbyhadz.com', encoding='utf-8') print(my_bytes) # 👉️ b'bobbyhadz.com' string = repr(my_bytes)[2:-1] print(string) # 👉️ bobbyhadz.com

repr()函数返回对象的规范字符串表示形式。

主程序
my_bytes = bytes('bobbyhadz.com', encoding='utf-8') print(my_bytes) # 👉️ b'bobbyhadz.com' print(repr(my_bytes)) # 👉️ b'bobbyhadz.com'

一旦我们将 bytes 对象转换为字符串,我们就可以使用字符串切片来删除b前缀。

字符串切片的语法是my_str[start:stop:step].

索引是包含的start,而stop索引是排他的(最多,但不包括)。

Python 索引是从零开始的,因此字符串中的第一个字符的索引为0,最后一个字符的索引为-1or len(my_str) - 1

切片my_str[2:-1]从索引开始,2一直到但不包括字符串中的最后一个字符。

我们基本上排除了b字符和引号。