Python 格式化字符串(格式化输出)

print() 函数使用以 % 开头的转换说明对各种类型的数据进行格式话输出。

 

 转换说明符(Conversion Specifier)只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值替代。

实例:

1 age = 8
2 print("你已经%d岁了!" % age)

结果:

1 你已经8岁了!

在print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。例子的格式化字符串包含一个 %d 说明符,最终会被后面的age变量值所替代。中间的 % 是一个分隔符,他前面是格式话字符串,后面是要输出的表达式。

格式话字符串也可以包含多个转换说明符,提供多个表达式,用替换对应的转换说明符;

示例:

1 name = '张三'
2 age = 15
3 addres = '中南海'
4 print("%s已经%d岁了,家庭住址是%s" % (name, age, addres))

结果:

张三已经15岁了,家庭住址是中南海

 

指定最小输出宽度;

使用转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):

%10d 表示输出的整数宽度至少为10;

%20s 表示输出的字符串宽度至少为20;

示例:

1 a = 1234567
2 print('a(10):%10d' % a)
3 print('a(5):%5d' % a)

结果:

a(10):   1234567
a(5):1234567

在结果中可以看到,对于整数,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,按照数据的实际宽度输出;

 

指定对齐方式;

默认情况下,print() 输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python 允许在最小宽度之前增加一个标志来改变对齐方式,Python 支持的标志如下:

 

 说明:

对于整数,指定左对齐时,在右边补0是没有效果的,因为这样会改变整数的值。

对于小数,以上三个标志可以同时存在。

对于字符串,只能使用 - 标志,因为符号对于字符串没有意义,而补0会改变字符串的值。

示例:

 1 a = 123456
 2 # %09d 表示最小宽度为9,左边补0
 3 print("a(09):%09d"% a)
 4 
 5 # %+9d 表示最小宽度为9,带上符号
 6 print("a(+9):%+9d"% a)
 7 
 8 f = 130.5
 9 # %-+010f,表示最小宽度为10,左对齐,带上符号
10 print("f(-+0):%-+10f"% f)
11 
12 s = "hello"
13 # %-10s 表示最小宽度为10,左对齐
14 print("s(-10):%-10s."% s)

结果:

a(09):000123456
a(+9):  +123456
f(-+0):+130.500000
s(-10):hello     .

指定小数精度:

对于小数(浮点数),print()还允许指定小数点后的数字位数,也即指定小数的输出精度。

精度值需要放在最小宽度之后,中间用点号 . 隔开;也可以不写最小宽度,只写精度。格式如下:

%m.nf
%.nf

m 表示最小宽度,n表示输出精度,. 是必须存在的。

示例:

1 f = 3.141592653
2 # 最小宽度为8,小数点后保留3位;
3 print("%8.3f" % f)
4 
5 # 最小宽度为8,小数点后保留3位,左边补0
6 print("%08.3f" % f)
7 
8 # 最小宽度为8,小数点后保留3位,左边补0,带符号
9 print("%+08.3f" % f)

结果:

   3.142
0003.142
+003.142

 

posted @ 2022-07-13 14:38  南城古  阅读(223)  评论(0编辑  收藏  举报