字符串格式化(format和%)

字符串格式化指的是在定义一个字符串的时候,字符串有的地方的字符序列事先并不一定能知道,此时可以用一些特殊的符号来占位,然后把内容在别处加上

字符串格式化有两种方式,第一种是用%格式化,第二种是用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进制,其中字母大写,%表示百分数

原文地址:https://www.cnblogs.com/jiachuantang/p/8378071.html