字符编码:
8个比特(bit)作为一个字节(byte),一个字节最大整数255(二进制11111111=十进制255)
python提供了ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符,注意是字符不是字符串。
>>>ord('A')
65
>>>chr(66)
'B'
如果知道字符的整数编码,还可以用十六进制写str
>>>'\u4e2d\u6587'
'中文'
由于python的字符串类型是str,在内存中以unicode表示,一个字符对应若干个字节,如果要在网络上传输,或者保存在硬盘上,就需要把str变为以字节为单位的bytes。
以unicode表示的str通过encode()
方法可以编码为指定的bytes。但要注意编码范围,否则会报错
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
'中文'.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
因为中文编码的范围超过了ascii编码范围,所以报错。
反过来,如果我们从网络或硬盘上读取了字节流bytes,要把bytes变为str就需要用decode()
方法。
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
str1.decode('gb2312')
表示将gb2312编码的字符串转换成unicode编码
str2.encode('gb2312')
表示将unicode编码的字符串转换成gb2312编码
字符串格式化符号含义:
符号 |
说明 |
%c |
格式化字符及其ASCII码 |
%s |
格式化字符串 |
%d |
格式化整数 |
%o |
格式化无符号八进制数 |
%x |
格式化无符号十六进制数 |
%X |
格式化无符号十六进制数(大写) |
%f |
格式化定点数,可指定小数点后的精度 |
%e |
用科学计数法格式化定点数 |
%E |
作用同%e,用科学计数法格式化定点数 |
%g |
根据值的大小决定使用%f活%e |
%G |
作用同%g,根据值的大小决定使用%f或者%E |
字符串转义字符含义
符号 |
说明 |
' |
单引号 |
" |
双引号 |
\a |
发出系统响铃声 |
\b |
退格符 |
\n |
换行符 |
\t |
横向制表符(TAB) |
\v |
纵向制表符 |
\r |
回车符 |
\f |
换页符 |
\o |
八进制数代表的字符 |
\x |
十六进制数代表的字符 |
\0 |
表示一个空字符 |
\\ |
反斜杠 |