18-python中bytes和 str的关系 以及编码encode,解码decode相关的知识

本文介绍了Python中的字符串(str)和字节流(bytes)的区别,强调了Python 3中对这两者的明确区分。原始字符串(raw strings)解决了转义字符的问题。内容详细解释了encode()和decode()方法,用于在str与bytes之间进行编码和解码,以及在处理文件读写时编码解码的重要性。
摘要由CSDN通过智能技术生成

1. python当中采取的是哪种编码?

import sys
print(sys.getdefaultencoding())

程序运行的结果:

utf-8

2. str 字符串

1. 原始字符串

Python 字符串中的反斜杠\有着特殊的作用,就是转义字符,例如上面提到的\'\"

转义字符有时候会带来一些麻烦,例如我要表示一个包含 Windows 路径D:\Program Files\Python 3.8\python.exe这样的字符串,在 Python 程序中直接这样写肯定是不行的,不管是普通字符串还是长字符串。

因为\的特殊性,我们需要对字符串中的每个\都进行转义,也就是写成D:\\Program Files\\Python 3.8\\python.exe这种形式才行。

这种写法需要特别谨慎,稍有疏忽就会出错。为了解决转义字符的问题,Python 支持原始字符串。在原始字符串中,\不会被当作转义字符,所有的内容都保持 原汁原味 的样子。

在普通字符串或者长字符串的开头加上r前缀,就变成了原始字符串,具体格式为:

str1 = r'原始字符串内容'
str2 = r"""原始字符串内容"""

示例代码:

rstr = r'D:\Program Files\Python 3.8\python.exe'
print(rstr)

程序运行的结果:

D:\Program Files\Python 3.8\python.exe

3. bytes

Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。

文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)

bytes是一种比特流,它的存在形式是01010001110这种。我们无论是在写代码,还是阅读文章的过程中,肯定不会有人直接阅读这种比特流,它必须有一个编码方式,使得它变成有意义的比特流,而不是一堆晦涩难懂的01组合。因为编码方式的不同,对这个比特流的解读也会不同,对实际使用造成了很大的困扰。下面让我们看看Python是如何处理这一系列编码问题的:

s = "中文"
print(s)
print(type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值