Python变量格式化输出实现原理解析


Posted in Python onAugust 06, 2020

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

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

转换说明符 解释
%d、%i 转换为带符号的十进制整数
%o 转换为带符号的八进制整数
%x、%X 转换为带符号的十六进制整数
%e 转化为科学计数法表示的浮点数(e 小写)
%E 转化为科学计数法表示的浮点数(E 大写)
%f、%F 转化为十进制浮点数
%g 智能选择使用 %f 或 %e 格式
%G 智能选择使用 %F 或 %E 格式
%c 格式化字符及其 ASCII 码
%r 使用 repr() 函数将表达式转换为字符串
%s 使用 str() 函数将表达式转换为字符串
%% 输出%

在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。

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

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

举例

name = '小明'
print("我的名字叫 %s,请多多关照!" % name)
# 我的名字叫 小明,请多多关照!

student_no = 1
print("我的学号是 %06d" % student_no)
# 我的学号是 000001

scale = 0.2
print("数据比例是 %.02f%%" % (scale * 100))
# 数据比例是 20.00%
指定最小输出宽度

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

%10d 表示输出的整数宽度至少为 10
%20s 表示输出的字符串宽度至少为 20
n = 1234567
print("n(10):%10d." % n)
print("n(5):%5d." % n)
url = "https://www.baidu.com/python/"
print("url(35):%35s." % url)
print("url(20):%20s." % url)

执行结果为:

n(10): 1234567.
n(5):1234567.
url(35): https://www.baidu.com/python/.
url(20):https://www.baidu.com/python/.

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

指定对齐方式

默认情况下,print() 输出的数据总是右对齐的。

当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python日志记录模块实例及改进
Feb 12 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
Python元组知识点总结
Feb 18 Python
python中如何使用分步式进程计算详解
Mar 22 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
PyCharm+Miniconda3安装配置教程详解
Feb 16 Python
浅谈Python数学建模之数据导入
Jun 23 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 #Python
vscode调试django项目的方法
Aug 06 #Python
Python如何使用input函数获取输入
Aug 06 #Python
Python map及filter函数使用方法解析
Aug 06 #Python
python学习笔记之多进程
Aug 06 #Python
Selenium alert 弹窗处理的示例代码
Aug 06 #Python
Python如何进行时间处理
Aug 06 #Python
You might like
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
php使用codebase生成随机数
2014/03/25 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
YII框架关联查询操作示例
2019/04/29 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
简单的js表单验证函数
2013/10/28 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
JavaScript实现更换背景图片
2019/10/18 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
python发送HTTP请求的方法小结
2015/07/08 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
Java如何调用外部Exe程序
2015/07/04 面试题
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
六查六看自查材料
2014/02/17 职场文书
全运会口号
2014/06/20 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript