Python格式化字符串(格式化输出)
发布时间:2023-05-26 17:35:31 所属栏目:语言 来源:
导读:我们在《第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。
熟悉C语言 printf()
熟悉C语言 printf()
我们在《第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉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)只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。 【实例】输出一个整数: age = 8 print("C语言中文网已经%d岁了!" % age) 运行结果: C语言中文网已经8岁了! 在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%d说明符,它最终会被后面的 age 变量的值所替代。 中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。 当然,格式化字符串中也可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )包围起来。请看下面的例子: name = "C语言中文网" age = 8 url = "http://c.biancheng.net/" print("%s已经%d岁了,它的网址是%s。" % (name, age, url)) 运行结果: C语言中文网已经8岁了,它的网址是http://c.biancheng.net/。 总之,有几个占位符,后面就得跟着几个表达式。 指定最小输出宽度 当使用表1中的转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置): %10d 表示输出的整数宽度至少为 10; %20s 表示输出的字符串宽度至少为 20。 请看下面的演示: n = 1234567 print("n(10):%10d." % n) print("n(5):%5d." % n) url = "http://c.biancheng.net/python/" print("url(35):%35s." % url) print("url(20):%20s." % url) 运行结果: n(10): 1234567. n(5):1234567. url(35): http://c.biancheng.net/python/. url(20):http://c.biancheng.net/python/. 从运行结果可以发现,对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。 你看,这里指定的只是最小宽度,当数据的实际宽度足够时,指定的宽度就没有实际意义了。 指定对齐方式 默认情况下,print() 输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python 允许在最小宽度之前增加一个标志来改变对齐方式,Python 支持的标志如下: Python 支持的标志 标志 说明 - 指定左对齐 + 表示输出的数字总要带着符号;正数带+,负数带-。 0 表示宽度不足时补充 0,而不是补充空格。 几点说明: 对于整数,指定左对齐时,在右边补 0 是没有效果的,因为这样会改变整数的值。 对于小数,以上三个标志可以同时存在。 对于字符串,只能使用-标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。 请看下面的代码: n = 123456 # %09d 表示最小宽度为9,左边补0 print("n(09):%09d" % n) # %+9d 表示最小宽度为9,带上符号 print("n(+9):%+9d" % n) f = 140.5 # %-+010f 表示最小宽度为10,左对齐,带上符号 print("f(-+0):%-+010f" % f) s = "Hello" # %-10s 表示最小宽度为10,左对齐 print("s(-10):%-10s." % s) 运行结果: n(09):000123456 n(+9): +123456 f(-+0):+140.500000 s(-10):Hello . 指定小数精度 对于小数(浮点数),print() 还允许指定小数点后的数字位数,也即指定小数的输出精度。 精度值需要放在最小宽度之后,中间用点号.隔开;也可以不写最小宽度,只写精度。具体格式如下: %m.nf %.nf m 表示最小宽度,n 表示输出精度,.是必须存在的。 请看下面的代码: f = 3.141592653 # 最小宽度为8,小数点后保留3位 print("%8.3f" % f) # 最小宽度为8,小数点后保留3位,左边补0 print("%08.3f" % f) # 最小宽度为8,小数点后保留3位,左边补0,带符号 print("%+08.3f" % f) 运行结果: 3.142 0003.142 +003.142 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐