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 类与元类的深度挖掘 II【经验】
May 06 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
python编写简单端口扫描器
Sep 04 Python
Python操作qml对象过程详解
Sep 26 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
使用python实现多维数据降维操作
Feb 24 Python
Django实现微信小程序支付的示例代码
Sep 03 Python
提高python代码运行效率的一些建议
Sep 29 Python
python自然语言处理之字典树知识总结
Apr 25 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执行速率优化技巧小结
2008/03/15 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python实现发送email的几种常用方法
2014/08/18 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
禁毒宣传工作方案
2014/05/23 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
工作证明书
2015/06/15 职场文书
初中语文教学随笔
2015/08/15 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Python基础之hashlib模块详解
2021/05/06 Python