字符编码:
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 |
表示一个空字符 |
| \\ |
反斜杠 |
网友评论