python小知识点随笔

可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符python

1.关于字符串编码网络

ASCII编码 占用一个字节 二进制11111111=十进制255 因此能够编码全部的字母和数字,好比大写字母A的编码是65,小写字母z的编码是122。可是因为各国语言自成一脉,不免冲突,一块儿出现会出现乱码。编码

Unicode编码应运而生,编译全部语言。一般占用两个字节,生僻汉字需4需4个字节,字母数字编码补0,缺点是储存空间变大,若都是英文字母,不划算。spa

UTF-8 可变长度编码集两者之长,把一个Unicode字符根据不一样的数字大小编码成1-6个字节,经常使用的英文字母被编码成1个字节,汉字一般是3个字节。命令行

计算机内存统一使用Unicode编码,存储和传输则使用UTF-8编码。code

 

 

Python的字符串类型是str,内存中以Unicode存储,若是要在网络上传输,或保存在磁盘上,就要把str变为以字节为单位的bytes(编码)blog

而从网络或磁盘上读取时,就要把bytes字节转换为str(解码)。对应的方法分别是encode()和decode()内存

解码的时候,若是包含没法解码的字节就会报错:utf-8

1 print(b'\xe4\xb8\xad'.decode('utf-8'))
>>> 中
2 print(b'\xe4\xb8\xad\xff'.decode('utf-8'))
>>>

  Traceback (most recent call last):
  ...
  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte字符串

若是只有一小部分无效的字节,能够传入errors='ignore'忽略错误的字节:

1 print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'))
>>> 中

当Python解释器读取源代码时,为了让它按UTF-8编码读取,咱们一般在文件开头写上这两行:

1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,不然,你在源代码中写的中文输出可能会有乱码。

PS. 字符串的占位符‘%s’,会把任何数据类型转换为字符串。也能够用具体的数据类型的占位符如%d表示整数,%f表示浮点数,%x表示十六进制整数 而%须要%转义,一般‘%%’表示‘%’

2.Python的复杂数据类型之 list,tuple,dict,set

相关文章
相关标签/搜索