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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
python开发之list操作实例分析
Feb 22 Python
12步教你理解Python装饰器
Feb 25 Python
图文详解WinPE下安装Python
May 17 Python
numpy自动生成数组详解
Dec 15 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
Python实现插入排序和选择排序的方法
May 12 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
Python Pandas常用函数方法总结
Jun 15 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中\r \r\n \t的区别示例介绍
2014/02/08 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
js中作用域的实例解析
2017/03/16 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
python机器学习之随机森林(七)
2018/03/26 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
参观监狱心得体会
2014/01/02 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
Java实现给Word文件添加文字水印
2022/02/15 Java/Android