字符串和编码
1.Python3的字符串使用Unicode,支持多语言。
2. ord():获取字符的整数表示 chr():把编码转换为对应的字符
3.Python的字符串定义类型为str,在内存中以Unicode表示,一个字符对应若干个字节。如果需要在网络上传输,或者保存到磁盘上,就需要转换为以字节为单位的bytes。Python对bytes类型的数据用带b前缀的单引号或双引号表示。
4.以Unicode表示的str通过encode()方法可以编码为指定的bytes。如下图:
纯英文的str可以用ASCII编码为bytes,内容是一样的,但含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错,含有中文的str可以用utf-8编码为bytes。在bytes中,无法显示为ASCII编码的字节,用\x**显示。
5.我们从网络或磁盘上读取的字节流,读到的数据是bytes,可以用decode()将bytes转换为str。
当bytes中包含违法解码的字节,decode()会报错,若只是包含一小段无效的字节,可以用“errors='ignore'”忽略无效的字节。
6.len()函数用来计算str的字符数,或者bytes的字节数(一个中文字符经过utf-8编码后通常会占用3个字节,而一个英文字符会占用1个字节),还可以查询list元素的个数。
7.在python编码中,通常在文件开头添加一下两行语句:
#!/usr/bin/python
# -*- coding: utf-8 -*-
第一行注释是告诉Linux/OSX系统,这是一个Python可执行程序,Windows系统会忽略这行注释;
第二行注释是告诉Python解释器,按照UTF-8编码读取源代码(确保源代码中的中文输出不会乱码),
申明UTF-8编码并不意味着.py文件就是UTF-8编码的,还得确保文本编辑器使用UTF-8 without BOM编码。
8.在Python中采用的格式化方式跟C语言是一样的,用%实现。
格式化整数和浮点数可以指定是否补0以及整数与小数的位数。
字符串中的%用%%来转义。
9.Python还可以用format()来实现格式化,它会用传入的参数依次替换字符串内的占位符{0},{1},{2}......
(注:本文仅为个人学习笔记)