字符串格式化指的是在定义一个字符串的时候,字符串有的地方的字符序列事先并不一定能知道,此时可以用一些特殊的符号来占位,然后把内容在别处加上
字符串格式化有两种方式,第一种是用%格式化,第二种是用format方法格式化。本文就这两种格式化方法进行讨论。
一.%格式化方法
1.表示字符串(%s.)
1 msg1=‘I am %s my hobby is %s‘ %(‘hahha‘,‘heheh‘) 2 msg2=‘I am %s my hobby is %s‘ %(‘hahha‘,123) 3 msg3=‘I am %s my hobby is %s‘ %(‘hahha‘,[1,2,3]) 4 msg4=‘I am %s my hobby is %s‘ %(‘hahha‘,(1,3,4)) 5 msg5=‘I am %s my hobby is %s‘ %(‘hahha‘,{‘key‘:‘value‘}) 6 print(msg1) 7 print(msg2) 8 print(msg3) 9 print(msg4) 10 print(msg5)
理论上说,%s可以代表任意类型的数据类型,但是为了提高代码的可读性,建议使用%s代表字符串。
2.表示浮点数(%.2f,%f)
1 f1=‘float type %f‘ % 89.89783942 f2=‘flaot type %.2f‘ % 89.8978394 3 print(f1) 4 print(f2)
%f表示该位置是一个浮点数,一般浮点数使用%.xf来表明保留的小数位,x代表保留的小数位,上面程序中x=2代表保留两位小数,如果只使用%f而不指明保留的小数位,则是默认保留6位小数
3.表示整数(%d)
msg=‘hah %d‘ % 45.89 #会把小数点后面的小数部分去掉 print(msg)
如果后面传的是一个浮点数,%d会把浮点数的小数位全部舍弃(不会四舍五入)
4.把数字转为百分比(%f %%,%d %%)
1 msg=‘its precent %f %%‘ % 78.4344333443232 2 msg1=‘its precent %.2f %%‘ % 78.434433323232 3 print(msg) 4 print(msg1)
要把数字转为百分比,需要将%%配合%d或%f使用。首先使用%f或%d表示该位置是一个数字,然后用%%表示将其转为百分比。
5.使用字典的形式格式化(%())
1 msg=‘My name is %(name)s,my age is %(age)d‘ % {‘name‘:‘hah‘,‘age‘:12} 2 print(msg)
这种方式,用()里面的内容来表示字典的key值,后面的s,d,f等来表示key值对应的value值的类型,这样就可以用value值来代替key值了。
6.补充:print用指定的分隔符将多个字符串连接起来
在使用print打印数据时,可以加一个参数用来分隔不同的字符串,具体用法如下:
print(‘root‘,‘x‘,‘0‘,‘0‘ ,sep=‘:‘)
执行后的代码如下:
二.format格式化:
1.指定变量名的格式化
tp1=‘I am {name},age{age},really{name}‘.format(name=‘hahah‘,age=12)
format格式化是利用{}来操作的,一个字符串调用format函数,然后将{}里面的变量赋相应的值,就可以用该值替换内容。
2.不指定变量名的格式化
1 tp2=‘I am {:s},age{:d},really{:s}‘.format(‘nicai‘,12,‘buhao1‘) 2 print(tp2) 3 tp3=‘I am {},age{},really{}‘.format(‘nicai‘,12,‘buhao1‘) 4 print(tp3)
tp2和tp3输出结果一致,不同的是tp2指定了每一个占位符的数据类型,建议使用tp2的形式,这样程序可读性更高
3.将format()函数里面的内容以字典的形式展示
1 tp3=‘I am {name},age{age},really{name1}‘.format(**{‘name‘:‘xie‘,‘age‘:12,‘name1‘:‘hdhie‘}) 2 print(tp3)
如果format()里面传的参数是一个字典,那么就在前面加**号表示。这种表示法语1相同
4.将format()函数里面的内容以列表的形式展示
1 tp3=‘I am {:s},age{:d},really‘.format(*[‘he‘,156]) 2 print(tp3)
如果format()里面传的参数是一个列表,那么就在前面加*号表示。这种方式与2相同。
5.用format将数字以特定的进制输出
1 msg=‘number:{:b},{:o},{:d},{:x},{:X},{:%},{}‘.format(99,99,99,99,99,99,99) 2 print(msg)
b表示二进制,o表示8进制,d表示10进制,x表示16进制,其中字母小写,X表示16进制,其中字母大写,%表示百分数