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

总结

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


相关文章
|
1月前
|
存储 Java 索引
Python String详解!
本文详细介绍了Python中的字符串数据类型,包括其创建、访问、切片、反转及格式化等操作。文章涵盖字符串的基本概念、各种操作方法以及常用内置函数。通过多个示例代码展示了如何使用单引号、双引号和三重引号创建字符串,如何通过索引和切片访问与修改字符串内容,以及如何利用格式化方法处理字符串。此外,还介绍了字符串的不可变性及其在实际应用中的重要性。通过本文的学习,读者可以全面掌握Python字符串的使用技巧。
41 4
|
3月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
59 1
|
19天前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
31 4
|
1月前
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
33 5
|
1月前
|
Go C++ Python
Python Tricks: String Conversion(Every Class Needs a ___repr__)
Python Tricks: String Conversion(Every Class Needs a ___repr__)
|
1月前
|
安全 JavaScript 前端开发
Python Tricks: A Shocking Truth About String Formatting(二)
Python Tricks: A Shocking Truth About String Formatting(二)
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
40 3
|
2月前
|
存储 文件存储 Python
python如何把字节写到文件里4-2
python如何把字节写到文件里4-2
|
1月前
|
Python
Python Tricks: A Shocking Truth About String Formatting(一)
Python Tricks: A Shocking Truth About String Formatting(一)
|
3月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)