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

总结

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


相关文章
|
3天前
|
存储 索引 Python
字符串、列表、元组、字典(python)
字符串、列表、元组、字典(python)
|
7天前
|
数据采集 开发者 Python
在Python中判断字符串中是否包含字母
在Python中判断字符串中是否包含字母
20 4
|
5天前
|
Python
python之字符串定义、切片、连接、重复、遍历、字符串方法
python之字符串定义、切片、连接、重复、遍历、字符串方法
6 0
python之字符串定义、切片、连接、重复、遍历、字符串方法
|
5天前
|
索引 Python 容器
深入探索Python字符串:技巧、方法与实战
深入探索Python字符串:技巧、方法与实战
|
6天前
|
Python
Python 字符串格式化的方式有哪些?
这篇文章主要介绍了Python的字符串格式化方法,包括: 1. `%` 操作符,如 `%s`, `%d`, `%f` 用于基本的变量插入和类型转换。 2. `str.format()` 方法,利用 `{}` 占位符和位置或关键字参数。 3. f-strings (Python 3.6+),直接在字符串前加 `f` 并在花括号内嵌入变量。 4. `string.Template` 模块,使用 `$` 符号进行模板替换。 5. `str.format_map()` 方法,接受字典替换占位符。 文章强调f-strings在新代码中的推荐使用,因其简洁和可读性。
|
3天前
|
安全 Java
Java基础之StringBuffer
Java中的`StringBuffer`是线程安全的可变字符串,适用于多线程环境,其方法同步导致较慢。`StringBuilder`在Java 5引入,非线程安全但更快,适合单线程操作。两者均提供append、insert、delete等方法。在不需要线程安全时,选择`StringBuilder`以提升效率。
9 1
|
8天前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`"123abc"`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
7天前
|
Java 数据处理 Apache
探讨Java中判断String类型为空和null的方法
探讨Java中判断String类型为空和null的方法
11 1
|
9天前
|
Java API 索引
java中String类常用API
java中String类常用API
|
3天前
|
存储 Java API
Java基础之String类
Java的String类是引用类型,用于创建和操作字符串。字符串对象在`java.lang`包中,不可变。创建方式包括字面量和`new`关键字。字符串池存储字符串常量,避免重复。比较字符串用`equals()`(区分大小写)和`equalsIgnoreCase()`(不区分大小写)。`length()`返回长度,`concat()`或`+`拼接,`substring()`截取,`indexOf()`和`lastIndexOf()`查找,`replace()`替换,`split()`分割。这些是常用的字符串API。
7 0