字符串格式

python提供%对各类型的数据进行格式化输出。

>>> price = 108
>>> print("the book's price is %s" % price)
the book's price is 108

print函数包含三部分,第一部分格式化字符串(它相当于字符串模板),该格式化字符串中包含一个%s占位符,它会被第三部分的变量或表达式的值代替,第二部分固定使用%作为分隔符。

格式化字符串中的%s被称为转换说明符(conversion specifier),其作用相当于一个占们符,它会被后面的变量或表达式的值代替。%s指定将变量或值使用str()函数转换为字符串。

如果格式化中包含多个%s占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来,

>>> user = 'charli'
>>> age = 8
>>> print("%s is a %s year old boy" % (user , age))
charli is a 8 year old boy

>>> num = 28
>>> print("num is: %6i" % num)
num is:     28
>>> print("num is: %6d" % num)
num is:     28
>>> print("num is: %6x" % num)
num is:     1c
>>> print("num is: %6o" % num)
num is:     34
>>> print("num is: %6X" % num)
num is:     1C
>>> print("num is: %6s" % num)
num is:     28

从输出结果可以看出,此时指定了字符串最小宽度为6,因此程序转换数值时总宽度为6,程序自动在数值前面补充了三个空格。默认情况下不够宽度时左边用空格补充。python也允许在最小宽度前添加一个标志来改变这种行为,支持的标志如下。

  1. -:指定左对齐
  2. +:表示数值总要带着符号(正数带+,负数带-)
  3. 0:表示不补充空格,而是补充0
>>> num2 = 30
>>> print("num2 is: %06d" % num2)     #最小宽度为0,左边补0
num2 is: 000030
>>> print("num2 is: %+06d" % num2)   #最小宽度为6,左边补0,总是带上符号
num2 is: +00030
>>> print("num2 is: %-06d" % num2)    #最小宽度为6,左边对齐。
num2 is: 30

对于转换浮点数python还允许指定小数点后的数字位数,如果转换的是字符串,python允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用(.)隔开,

>>> my_value = 3.001415926535
>>> print("my_value is: %8.3f" % my_value)    #最小宽度为8小数点后面保留3位。
my_value is:    3.001
>>> print("my_value is: %08.3f" % my_value)   #最小宽度为8小数点后面保留3位,左边补0
my_value is: 0003.001
>>> print("my_value is: %+08.3f" % my_value)  #最小宽度为8小数点后面保留3位,左边补0,始终带符号
my_value is: +003.001
>>> the_name = 'charlie'
>>> print("the_name is: %.3s" % the_name)   #只保留3个字符。
the_name is: cha
>>> print("the_name is: %10.2s" % the_name)   #只保留2个字符,最小宽度为10
the_name is:         ch

 

posted @ 2021-03-26 14:03  星火撩原  阅读(691)  评论(0编辑  收藏  举报