Python中bytes字节串和string字符串之间的转换方法

目录

背景

在工作中经常会碰到字节串(bytes)与字符串(string)之间转换的问题,做个记录。

bytes只负责用字节序列的形式(二进制形式)存储数据,不关心数据本身是图片、文字、视频等等。如果需要使用并且展示的话,按照对应的解析规则处理,就可以拿到对应类型的数据。如常见的字符串类型,只需要使用对应的字符编码格式,就可以拿到字符串的内容。

下面会用一些代码来表示bytes的构造,以及和字符串之间的转换。

代码

先看一下代码。

#!/user/bin/env python
# coding=utf-8
\"\"\"
@project : csdn
@author  : huyi
@file   : byte_to_string.py
@ide    : PyCharm
@time   : 2021-12-23 11:47:45
\"\"\"
# 不指定字符集
b1 = b\'I love u , baby\'
print(\'b1\', b1)
print(b1[:-3])
 
# 指定字符集
b2 = bytes(\'今天天气真好/哈哈\', encoding=\'UTF-8\')
print(\'b2\', b2)
 
# 字符串转为bytes
str1 = \'元宇宙会导致人类文明的停滞吗?\'
b3 = str1.encode(\'UTF-8\')
print(\'b3\', b3)
 
# bytes转为字符串方法1
str2 = str(b3, \'UTF-8\')
print(\'str2\', str2)
 
# bytes转为字符串方法1
str3 = b3.decode(\'UTF-8\')
print(\'str3\', str3)

代码说明:

1、可以使用字符串前面加小写字母b的方式定义bytes,但是不建议,建议使用b2的定义方式,可以调整字符编码。

2、字符串类型的数据可以通过encode方法,将字符串按照字符编码转为bytes。

3、bytes也可以通过str的构造指定字符编码或者decode方法,将bytes转为字符串。

验证一下

PyDev console: starting.
Python 3.6.13 |Anaconda, Inc.| (default, Mar 16 2021, 11:37:27) [MSC v.1916 64 bit (AMD64)] on win32
runfile(\'D:/spyder/csdn/tool/byte_to_string.py\', wdir=\'D:/spyder/csdn/tool\')
b1 b\'I love u , baby\'
b\'I love u , b\'
b2 b\'\\xe4\\xbb\\x8a\\xe5\\xa4\\xa9\\xe5\\xa4\\xa9\\xe6\\xb0\\x94\\xe7\\x9c\\x9f\\xe5\\xa5\\xbd/\\xe5\\x93\\x88\\xe5\\x93\\x88\'
b3 b\'\\xe5\\x85\\x83\\xe5\\xae\\x87\\xe5\\xae\\x99\\xe4\\xbc\\x9a\\xe5\\xaf\\xbc\\xe8\\x87\\xb4\\xe4\\xba\\xba\\xe7\\xb1\\xbb\\xe6\\x96\\x87\\xe6\\x98\\x8e\\xe7\\x9a\\x84\\xe5\\x81\\x9c\\xe6\\xbb\\x9e\\xe5\\x90\\x97\\xef\\xbc\\x9f\'
str2 元宇宙会导致人类文明的停滞吗?
str3 元宇宙会导致人类文明的停滞吗?

附:bytes和string区别

1.python bytes 也称字节序列,并非字符。取值范围 0 <= bytes <= 255,输出的时候最前面会有字符b修饰;string 是python中字符串类型;

2.bytes主要是给在计算机看的,string主要是给人看的;

3.string经过编码encode,转化成二进制对象,给计算机识别;bytes经过解码decode,转化成string,让我们看,但是注意反编码的编码规则是有范围,\\xc8就不是utf8识别的范围;

if __name__ == \"__main__\":
# 字节对象b
b = b\"shuopython.com\"
# 字符串对象s
s = \"shuopython.com\"
print(b)
print(type(b))
print(s)
print(type(s))

输出结果:

b'shuopython.com'
<class 'bytes'>
shuopython.com
<class 'str'>

总结

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容