字符编码
str:‘ABC’
bytes:b’ABC’,在字符串前加b即为bytes类型。
str可以包含英文、中文等字符,bytes只能直接包含中文,如需包含中文,要以中文的Unicode码格式,如"中"字的bytes是b’\xe4\xb8\xad’。
str类型数据在内存中是以Unicode编码格式表示的,由于Unicode比较占存储空间(例如字符A的Unicode编码为00000000 01000001,一个字符对应n个字节),所以在实际存储或传输时,就需要转成bytes类型(一个字符对应1个字节)。
常用的与字符编码相关的函数如下:
函数 | 说明 | 实例 |
ord | 获取字符的整数表示 | >>> ord(‘A’) |
chr | 将编码转换成字符 | >>> chr(65) |
encode | 将str编码为指定的bytes: 纯英文str可以编码成ascii、utf-8, 含中文的str只能编码成utf-8 | >>> s=‘ABC’ |
decode | 将bytes按指定的编码转换为str: 纯英文bytes可以转成ascii、utf-8的str, 含中文的bytes只能转成utf-8,因为ascii编码不包含中文 | >>> b |
len | 计算str的字符数,或者bytes的字节数 | >>> len(‘ABC’) |
格式化
%
Python和C语言一样,使用%运算符来格式化字符串,格式为:“Hello, %s” %
占位符 | 替换内容 |
%d | 整数 |
%s | 字符串 |
%f | 浮点数 |
%x | 十六进制整数 |
占位符和%后面的变量或值的个数要一致,当只有一个占位符时,在%后直接加上变量或值,当有多个占位符时,变量或值要用()括起来,用,分隔。
>>> "Hello, %s" % "Python"
'Hello, Python'
>>> "Hello, %s, %d" % ("Python", 2020)
'Hello, Python, 2020'
>>> "Hello, %s %d" % ("Python", year) # year是一个变量
'Hello, Python 2020'
此外,还可以指定整数或小数的位数,也是和C语言一样:
>>> "%02d" % 18 # %02d表示以整数显示,位数为2,不足2位则在前面补0
'18'
>>> "%04d" % 18
'0018'
>>> "%f" % 10.1 # %f默认只保留6位小数
'10.100000'
>>> "%.2f" % 10.1 # %.2f表示小数点后保留2位
'10.10'
format
字符串中使用{0}、{1}…等占位符,字符串后面跟.format(),()中是变量或值,第一个变量或值对应{0},第2个对应{1}…
>>> "{0}, {1}°C".format('Beijing', 2)
'Beijing, 2°C'
>>> "{0}, {1:.1f}°C".format('Beijing', 2) # 占位符中数字后可以加上格式化参数
'Beijing, 2.0°C'
f-string
字符串中使用到变量时,可用f-string,格式形如f’xxx {name}’,即在字符串前加f,字符串中用{}把变量名括起来,{name}就会被变量的值替换:
>>> f"{a}"
'中'
>>> f"Beijing {temp}°C"
'Beijing 2°C'