教程集 www.jiaochengji.com
教程集 >  Python编程  >  Python入门  >  正文 Python格式化字符串(格式化输出)

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

发布时间:2021-12-20   编辑:jiaochengji.com
教程集为您提供Python格式化字符串(格式化输出)等资源,欢迎您收藏本站,我们将为您提供最新的Python格式化字符串(格式化输出)资源

Python 提供了“%”对各种类型的数据进行格式化输出,例如如下代码:

<pre class="brush:html;toolbar:false">price = 108 print ("the book's price is %s" % price)</pre>

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

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

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

<pre class="brush:html;toolbar:false">user = "Charli" age = 8 # 格式化字符串有两个占位符,第三部分提供2个变量 print("%s is a %s years old boy" % (user , age))</pre>

在格式化字符串中难道只能使用“%s”吗?还有其他转换说明符吗?如果只有“%s”这一种形式,Python 的格式化功能未免也太单一了。

实际上, Python 提供了如下所示的转换说明符:

<table><tbody><tr class="firstRow"><th>转换说明符</th><th>说明</th></tr><tr><td>%d,%i</td><td>转换为带符号的十进制形式的整数</td></tr><tr><td>%o</td><td>转换为带符号的八进制形式的整数</td></tr><tr><td>%x,%X</td><td>转换为带符号的十六进制形式的整数</td></tr><tr><td>%e</td><td>转化为科学计数法表示的浮点数(e 小写)</td></tr><tr><td>%E</td><td>转化为科学计数法表示的浮点数(E 大写)</td></tr><tr><td>%f,%F</td><td>转化为十进制形式的浮点数</td></tr><tr><td>%g</td><td>智能选择使用 %f 或 %e 格式</td></tr><tr><td>%G</td><td>智能选择使用 %F 或 %E 格式</td></tr><tr><td>%c</td><td>格式化字符及其 ASCII 码</td></tr><tr><td>%r</td><td>使用 repr() 将变量或表达式转换为字符串</td></tr><tr><td>%s</td><td>使用 str() 将变量或表达式转换为字符串</td></tr></tbody></table>

当使用上面的转换说明符时,可指定转换后的最小宽度,例如如下代码:

<pre class="brush:html;toolbar:false">num = -28 print("num is: %6i" % num) print("num is: m" % num) print("num is: %6o" % num) print("num is: %6x" % num) print("num is: %6X" % num) print("num is: %6s" % num)</pre>

运行上面代码,可以看到如下输出结果:

<pre class="brush:html;toolbar:false">num is:    -28 num is:    -28 num is:    -34 num is:    -1c num is:    -1C num is:    -28</pre>

<span style="background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family: "Helvetica Neue", 微软雅黑, "Microsoft Yahei", Helvetica, Arial, sans-serif;">从上面的输出结果可以看出,此时指定了字符串的最小宽度为 6,因此程序转换数值时总宽度为 6,程序自动在数值前面补充了三个空格。</span><span style="color: rgb(68, 68, 68); font-family: "Helvetica Neue", 微软雅黑, "Microsoft Yahei", Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);"></span>

在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志:

-:指定左对齐。

:表示数值总要带着符号(正数带“ ”,负数带“-”)。

0:表示不补充空格,而是补充 0。

例如如下代码

<pre class="brush:html;toolbar:false">num2 = 30 # 最小宽度为0,左边补0 print("num2 is: d" % num2) # 最小宽度为6,左边补0,总带上符号 print("num2 is: % 06d" % num2) # 最小宽度为6,右对齐 print("num2 is: %-6d" % num2)</pre>

运行上面代码,可以看到如下输出结果:

<pre class="brush:html;toolbar:false">num2 is: 000030 num2 is:  00030 num2 is: 30</pre>

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

<pre class="brush:html;toolbar:false">my_value = 3.001415926535 # 最小宽度为8,小数点后保留3位 print("my_value is: %8.3f" % my_value) # 最小宽度为8,小数点后保留3位,左边补0 print("my_value is: .3f" % my_value) # 最小宽度为8,小数点后保留3位,左边补0,始终带符号 print("my_value is: % 08.3f" % my_value) the_name = "Charlie" # 只保留3个字符 print("the name is: %.3s" % the_name) # 输出Cha # 只保留2个字符,最小宽度10 print("the name is: .2s" % the_name)</pre>

运行上面代码,可以看到如下输出结果:

<pre class="brush:html;toolbar:false">my_value is:    3.001 my_value is: 0003.001 my_value is:  003.001 the name is: Cha the name is:         Ch</pre>

您可能感兴趣的文章:
python中%s是什么
深入浅出讲解Python字符串格式化
php字符串函数有哪些
PHP字符串函数与使用分析
一看就懂的Python输入和输出、格式化字符串方法
php 数字格式化函数 number_format 简介
Python格式化字符串(格式化输出)
php字符串处理函数
Python字符串操作常用知识点(2)
Python中format函数字符串格式化入门

[关闭]
~ ~