字符串格式化(format和%)

Posted jiachuantang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串格式化(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进制,其中字母大写,%表示百分数

以上是关于字符串格式化(format和%)的主要内容,如果未能解决你的问题,请参考以下文章

Python 中格式化字符串 % 和 format 两种方法之间的区别

Python之路--Python中应该使用%还是format来格式化字符串?

Python中应该使用%还是format来格式化字符串?

string.format()的用法?

使用 NumberFormat 格式化数字的 FieldPosition

python 内置函数format