一、%操作符
在使用print打印方法中,经常会用到字符串格式化操作。常用的格式化符号如下表所示。
在使用print输出时,同时输出多个字符串的方法如下。
输入:
print('the score is %d ad result is %f' % (1298,1.314))
输出:
the score is 1298 ad result is 1.314000
对于浮点型数据,如果要保留特定位数的小数,方法如下。
输入:
print('the score is %d ad result is %.2f' % (1298,1.314))
输出:
the score is 1298 ad result is 1.31
其中.2f表示输出的浮点数保留2位四舍五入的小数。
二、str.format
与%占位符类似,str. format使用{}做占位符。这是一个针对字符串格式化输出的利器,相比较之前的%操作符,str.format使用灵活、方便,能通过多种途径获取要输出的变量内容。
str.format占位符所指示的格式化语法为:
[fill][align][sign][#][0][width][,][.precision][type]
其中:
-
[fill]是任何要填充到占位符的字符串。
-
[align]是对齐方式,通过<、>、=、^可设置为左对齐、右对齐、强制将变量值放到符号之后数字之前以及强制居中对齐。
-
[sign]是符号选项,仅对数字类型有效,通过+表示一个符号应该用于正数和负数;-表示一个符号只能用于负号;空格表示在正数时应使用前导空格,负数使用负号。
-
[#]选项仅对整数有效,仅适用于二进制、八进制或十六进制输出。如果存在,它指定输出将分别以0b、0o或0x为前缀。
-
[width]是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。
-
[, ]表示使用逗号作为千分位分隔符。
-
[.precision]用来控制精度,这是一个十进制数,表示在使用f和F格式化的浮点值的小数点后面应显示多少个数字。
-
[type]表示以何种形式展示数据,常用的类型如下表所示。
案例一:通过位置映射获得变量信息输出数据
print('number:{1},count:{0}'.format(10,20))
输出:
number:20,count:10
其中’'number:{1}, count:{0}'’为原始字符串,{1}代表format变量中的第2个变量值,{0}代表format变量中的第1个变量值。字符串的占位符与format参数不要求前后位置一一对应,只要索引位置对应即可。
案例二:通过列表/元组/字符串的位置映射形式输出一组数据
str_key='I am:{0[1]} \nyou are:{0[2]} \nhe is :{0[0]}'
str_value=('luvy','tony','lilei')
print(str_key.format(str_value))
输出:
I am:tony
you are:lilei
he is :luvy
其中{0[1]}代表输出的是元组的第2个值,以此类推,{0[2]}和{0[0]}分别代表元组的第3个和第1个值。format的参数变量可以是元组也可以是列表,只要是能迭代读出的序列就可以。除了列表和元素,还可以使用分割后的字符串(如果觉得字符串本身也有意义,也可以直接使用字符串),字符串位置与fomat参数的位置无关,只与位置索引有关。例如:
str_key='I am:{0[1]} \nyou are:{0[2]} \nhe is :{0[0]}'
str_value='luvy,tony,lilei'
print(str_key.format(str_value.split(',')))
输出:
I am:lilei
you are:lilei
he is :tony
案例三:通过列表/元组/字符串的形式多次输出一组数据
str_key='I am:{0[1]} \nyou are:{0[1]} \nhe is :{0[0]}'
str_value='tony,lilei'
print(str_key.format(str_value.split(',')))
输出:
I am:lilei
you are:lilei
he is :tony
上述代码中,在占位符中可多次调用format参数中的索引。字符串可以多次映射到format参数的位置,与其参数的数量无关。
案例四:通过关键字参数获得变量信息
str_value={'age':30,'name':'tony'}
str_key='I am:{name},I am:{age} years old'
print(str_key.format(**str_value))
输出:
I am:tony,I am:30 years old
上述代码中,先定义一个字典,字典的key为关键字参数,然后在format参数中,通过“**+字典名称”的方式批量传入参数信息。
案例五:通过表达式结合数字传递变量信息
print('rate is:{:.2%}'.format(10/21))
输出:
rate is:47.62%
上述代码中,在format参数中传入一个表达式来传值。占位符表示的是保留2位小数的百分数。
案例六:样式居中对齐
print('{:*^40}'.format('this is title'))
输出:
*************this is title**************
上述代码中,强制字符串居中对齐,总长度为40位,不足的部分以*补齐。