字符串
字符串的格式化输出
- str.format(a,b,c,…)
- ‘xxxx{}xxxx{}’.format(0,1) {}中不指定位置自动按照位置匹配
- ‘xxxx{1}xxxx{0}’.format(0,1) {}中指定位置,根据位置匹配,位置从0开始
- ‘xxxx{key1}xxxx{key2}.format(key1=value1,key2=value2)’#根据key1,key2对应值
- ‘xxxx{0[0]}xxxx{0[1]}’.format(seq) format中是一个列表,则把列表看做0位置,然后再从列表中索引
- ‘xxxx{0[0]}xxxx{1[0]}’.format(seq1,seq2)
- ‘xxxx{}xxxx{}’.format(*iterable)#序列解包,传递参数
- ‘xxxx{key1}xxxx{key2}’,format(**dict)#序列解包,传递参数
- ‘xxxx%sxxxx%d’%(‘a’,3):
-
符号 描述 %c 格式化字符及其ASCII码 %s 格式化字符串 %d 格式化整数 %u 格式化无符号整型 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大写) %f 格式化浮点数字,可指定小数点后的精度 %e 用科学计数法格式化浮点数 %E 作用同%e,用科学计数法格式化浮点数 %g %f和%e的简写 %G %f 和 %E 的简写 %p 用十六进制数格式化变量的地址 - f’xxx{变量或者表达式}xxx’:
- 优点是不用判断是%s还是%d了
format函数格式控制方法
‘xxxx{序号:格式}’.format()#冒号后面代表了格式
- 格式的符号与含义与顺序
: [填充] [对齐] [宽度] [,] [.精度] [类型] 引导符号 要填充的单个字符,默认是空格 < 左对齐
> 右对齐
^ 居中对齐设定槽的输出宽度 数字的千位分隔符 适用于整数和浮点数 用于控制浮点数小数部分的精度(长度)或字符串的最大输出长度 整数类型:b,c,d,o,x,X 浮点数类型:e,E,f,% 如果要设置多种格式,则必须要按照该表的前后顺序
一般有两种组合:
-
填充/对齐/宽度
- {0:*30}
- {0:*>30}
-
分隔符/精度/类型
- {,.3b}
-
类型的格式
类型 描述 类型 描述 b 输出整数的二进制形式 e 输出浮点数对应的小写字母e的指数形式 c 输出整数对应的Unicode字符 E 输出浮点数对应的大写字母E的指数形式 d 输出整数的十进制形式 f 输出标准浮点数形式 o 输出整数的八进制形式 % 输出浮点数的百分比形式 x 输出整数的小写十六进制形式 X 输出整数的大写写十六进制形式 from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"
'{0:0<5}'.format(3)#左对齐,从左往右放 '{0:0>5}'.format(5)#右对齐,从右往左放 '{0:0^5}'.format(5)#先放在中间
'30000' '00005' '00500'
import math '{0:,}'.format(1e7) '{0:,.3f}'.format(math.pi) '{0:,.3%}'.format(math.pi)#数字部分保留三位小数
'10,000,000.0' '3.142' '314.159%'
字符串的编码
-
字符串的编码:str.encode(encoding="")#Unicode编码
-
字节串的解码:byte.decode(encoding="")#解码
-
编码格式
- Unicode编码:
- UTF-8 在UTF-8编码中,英文字符占一个字节,中文字符占用3个字节
- GBK 在GBK编码中,英文字符占一个字节,中文字符占用2个字节
- ASCII编码:
- Unicode编码:
-
ASCII编码和Unicode编码的区别:
-
ASCII编码是1个字节,而Unicode编码通常是2个字节,举例如下。
字母 A 用ASCII编码是十进制的65,二进制的01000001;
字符 0 用ASCII编码是十进制的48,二进制的00110000,注意字符 ‘0’ 和整数 0 是不同的;
汉字 中 已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。
如果把ASCII编码的 A 用Unicode编码,只需要在前面补0就可以,因此, A 的Unicode编码是00000000 01000001。
-
正则表达式
import re
re.findall
找到所有匹配模式的字符串
re.findall(r'[135]','12345739')
['1', '3', '5', '3']
根据match对象的group或groups返回匹配的字符串
##返回第一个 re.match(r'12','3412')#从字符串开始开始匹配,无返回值 re.match(r'34','3412')#有返回值 re.search(r'12','3412')#全局匹配 ##返回所有 re.finditer(r'12','341212')
<re.Match object; span=(0, 2), match='34'> <re.Match object; span=(2, 4), match='12'> <callable_iterator at 0x21b3924a788>
### re.findall() for i in re.finditer(r'(\d)(\w)','35b7sq6z'): i.groups()#返回所有组的元组 i.group(0)#返回匹配的字符串 i.group(1)#返回第一组 i.group(2)#返回第二组
('3', '5') '35' '3' '5' ('7', 's') '7s' '7' 's' ('6', 'z') '6z' '6' 'z'
找一个满足条件的字符串
- f’xxx{变量或者表达式}xxx’:
-