1 字符编码
ASCII:1个字节
Unicode:通常为2个字节
UTF-8:常用英文字母1个字节,汉字通常3个字节
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者传输时,转换为UTF-8编码。
例如:
- 用记事本编辑的时候,从文件读取的UTF-8字符就被转换成Unicode字符到内存中,编辑完成后,保存时会把Unicode转换为UTF-8保存到硬盘中。
- 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器中显示。
2 Python字符串
- 对于单个字符,ord()函数可以获取字符的整数表示,chr()函数把编码转换成对应的字符。
- 如果在网络上传输或把数据保存在硬盘上,需要把字符串转换成一字节为单位的bytes,bytes每个字符只占用一个字节。
x=b'abc' // bytes类型的数据用b作为前缀
- 以Unicode表示的字符串通过encode()函数可以直接编码为只等的bytes。含有中文的字符串无法用ASCII编码,因为中文编码的范围超过了ASCII的范围,会报错。
'abc'.encode('ascii')
'你好'.encode('utf-8')
- 我们从网络上或硬盘上读取了字节流,则读到的数据就是bytes。要把bytes变为字符串,就要用到decode()函数。如果bytes中包含无法解码的字节,decode()函数会报错。
b'abc'.decode('ascii')
b'efg'.decode('utf-8')
decode('utf-8',errors='ignore') // 如果bytes中有一小部分无效,则可使用此方法忽略错误的字节。
- 计算字符串中含有的字节数,使用len()函数。
len(b'abc') // 3
len('你好'.encode('utf-8')) // 6
- 当Python解释器读取源代码时,为了让它按照UTF-8编码读取,通常在文件开头添加两行话
#!/usr/bin/env python3 // 告诉系统这是一个Python可执行程序
# -*_ coding: utf-8 -*- // 告诉Python解释器,按照utf-8编码读取源代码
3 格式化
如何输出格式化的字符串
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
>>> 'hello, %s' %'world'
'hello, world'
>>> 'hello, %s, welcome to %s' %('李四','北京')
'hello, 李四, welcome to 北京'
>>> 'you have %d money' %10000
'you have 10000 money'
>>> '%2d-%02d' %(3,1) // 指定补零
' 3-01'
>>> '%05d' %4
'00004'
>>> '%5d' %5 // 占了5个位置
' 5'
>>> '%.2f' %3.1415926 // 指定小数位数
'3.14'
注意:
- 如果不确定用什么匹配,则可以用%s,会把任何数据类型转换为字符串。
- %%表示一个%
- format()函数,使用传入参数替换字符串内的占位符{0},{1}…….
>>> 'hello,{0}, 成绩提升了{1:.1f}%'.format('李四',15.155)
'hello,李四, 成绩提升了15.2%'