Python bytes字节串与string字符串之间的转换

简介: 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 元宇宙会导致人类文明的停滞吗?

总结

没啥总结的,记录分享。如果对你有用的话,看心情给个赞吧。


相关文章
|
10天前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
193 100
|
10天前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
210 99
|
13天前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
13天前
|
开发者 Python
Python f-strings:更优雅的字符串格式化技巧
Python f-strings:更优雅的字符串格式化技巧
|
13天前
|
开发者 Python
Python f-string:高效字符串格式化的艺术
Python f-string:高效字符串格式化的艺术
|
4月前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
82 0
|
7月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
149 11
|
7月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
158 9
|
7月前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化

推荐镜像

更多