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

Dear 丶 2024-03-30 17:39 185阅读 0赞

c3c7de91f060efc7e1ed997d3b211ddc.png

熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。

print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

表 1 Python 转换说明符




















































转换说明符

解释

%d、%i

转换为带符号的十进制整数

%o

转换为带符号的八进制整数

%x、%X

转换为带符号的十六进制整数

%e

转化为科学计数法表示的浮点数(e 小写)

%E

转化为科学计数法表示的浮点数(E 大写)

%f、%F

转化为十进制浮点数

%g

智能选择使用 %f 或 %e 格式

%G

智能选择使用 %F 或 %E 格式

%c

格式化字符及其 ASCII 码

%r

使用 repr() 函数将表达式转换为字符串

%s

使用 str() 函数将表达式转换为字符串

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

【实例】输出一个整数:

  1. age =23
  2. print("CSDN专业开发者社区23岁了!"% age)

运行结果:

CSDN专业开发者社区23岁了!

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

中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。

当然,格式化字符串中也可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )包围起来。请看下面的例子:

  1. name ="CSDN专业开发者社区"
  2. age =23
  3. url ="https://www.csdn.net/"
  4. print("%s已经%d岁了,它的网址是%s。"%(name, age, url))

运行结果:

CSDN专业开发者社区23岁了,它的网址是 https://www.csdn.net/ 。

总之,有几个占位符,后面就得跟着几个表达式。

指定最小输出宽度

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

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

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

请看下面的演示:

  1. n =1234567
  2. print("n(10):%10d."% n)
  3. print("n(5):%5d."% n)
  4. url ="https://blog.csdn.net/nav/python/"
  5. print("url(35):%35s."% url)
  6. print("url(20):%20s."% url)

运行结果:

n(10): 1234567.
n(5):1234567.
url(35): https://blog.csdn.net/nav/python/.
url(20): https://blog.csdn.net/nav/python/.

从运行结果可以发现,对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。

你看,这里指定的只是最小宽度,当数据的实际宽度足够时,指定的宽度就没有实际意义了。

指定对齐方式

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

Python 支持的标志




















标志

说明

-

指定左对齐

+

表示输出的数字总要带着符号;正数带+,负数带-。

0

表示宽度不足时补充 0,而不是补充空格。

几点说明:

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

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

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

请看下面的代码:

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

运行结果:

n(09):000123456
n(+9): +123456
f(-+0):+140.500000
s(-10):Hello .

指定小数精度

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

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

%m.nf
%.nf

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

请看下面的代码:

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

运行结果:

3.142
0003.142
+003.142

发表评论

表情:
评论列表 (有 0 条评论,185人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python格式化输出

    格式化输入输出 (1)在python中可以使用print函数将信息输出到控制台 > 如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符 > % 被称

    相关 python字符串格式化输出

    一.格式化字符串 格式化字符串 是一些程序设计语言在格式化输出API函数中用于指定输出参数的格式与相对位置的字符串参数,例如C、C++等程序设计语言的printf类函数,