Python基础之好玩的字符串格式化之类C风格
今天白月黑羽和大家说说字符串格式化,在python3中,字符串格式化主要有2种方法,今天先和大家介绍类C风格的printf。
printf 风格
这种方式 和 传统的C语言printf函数使用一样的格式化语法。
比如上面的例子里面,我们使用这种方法可以这样格式化字符串
1 2 3 4 5 6 7 | salary = input ( '请输入薪资:' ) # 计算出缴税额,存入变量tax tax = int (salary) * 25 / 100 <br> # 计算出税后工资,存入变量aftertax aftertax = int (salary) * 75 / 100 <br> print ( '税前薪资是:%s 元, 缴税:%s 元, 税后薪资是:%s 元' % (salary,tax,aftertax)) |
大家运行一下看看,可以发现也能正确的输出结果。
大家可以发现,和前面的字符串拼接不同, 我们使用了下面这样模板一样的字符串
税前薪资是:%s 元, 缴税:%s 元, 税后薪资是:%s 元
其中 %s 就是模板中的占位符,表示这个位置先占着,待会儿要有数据填入到这里。
然后再提供一个元组,里面依次存放需要填入到 %s 占位位置 数据。
这里是使用变量 (salary,tax,aftertax) 。
%s 是一种格式化符号, Python 解释器 看到 %s , 就会调用内置函数 str(),并将对应的格式化对象作为的参数传入 , 返回的结果字符串填入对应占位符。
简单说 %s 位置填入的结果,就是调用str函数的返回值。
str()内置函数,它的参数几乎所有内置类型的对象,字符串、 整数、 浮点数 、list 等等都可以
所以 我们可以用 %s 为占位符, 对应的格式化对象, 不仅仅是字符串,可以是整数、 浮点数 、list 等等。
格式化字符串里面占位符的个数 必须 和 后面对应的格式化对象个数相同,
比如
1 | '税前薪资:%s 元, 缴税:%s 元, 税后薪资:%s 元' % (salary,tax,aftertax) |
占位符是3个,那么后面的元组里面的格式化对象就是3个。
如果占位符是2个,后面的元组里面的格式化对象就应该是2个。像这样
1 | '税前薪资:%s 元, 缴税:%s 元' % (salary,tax) |
如果占位符是1个,后面的元组里面的格式化对象就应该是1个。像这样
1 | '税前薪资:%s 元' % (salary,) |
还记得,我们说过, 元组里面只有1个元素,后面别忘了加个逗号。
像这种只有一个格式化对象的情况下,可以直接就用格式化对象,不需要放到元组里面,像这样
1 | '税前薪资:%s 元' % salary |
指定宽度和对齐
如果我们需要将下面这样的3个字符串进行格式化
1 2 3 | '税前薪资:%s 元' % 100000 '税前薪资:%s 元' % 10000 '税前薪资:%s 元' % 1000 |
得到的结果如下
1 2 3 | 税前薪资: 100000 元 税前薪资: 10000 元 税前薪资: 1000 元 |
会发现,由于被格式化的数字对应的字符串长度不同,导致结果不对齐。这样的输出结果显得不够美观。
右对齐
我们可以指定格式化结果的字符串长度,比如我想要格式化结果至少10个字符,不足10个字符补空格,就可以这样
1 2 3 | '税前薪资:%10s 元' % 100000 '税前薪资:%10s 元' % 10000 '税前薪资:%10s 元' % 1000 |
%10s 中的 10 就是指定了格式化结果至少10个字符。
得到的结果就是
1 2 3 | 税前薪资: 100000 元 税前薪资: 10000 元 税前薪资: 1000 元 |
左对齐
如果我们希望是左边对齐,而不是右边对齐,就可以加一个 - 好,像这样
1 2 3 | '税前薪资:%-10s 元' % 100000 '税前薪资:%-10s 元' % 10000 '税前薪资:%-10s 元' % 1000 |
可以得到如下结果
1 2 3 | 税前薪资: 100000 元 税前薪资: 10000 元 税前薪资: 1000 元 |
%d 和 %f
占位符除了 %s ,还有其它的一些。常见的是 %d 和 %f 。
%d 用在 格式化对象 是 整数的情况 ,比如
1 | '税前薪资:%d 元' % 10000 |
%f 用在 格式化对象 是 浮点数的情况,比如
1 | '税前薪资:%f 元' % 10000.32 |
前面我们说过了 %s 也可以用来格式化 整数和 浮点数,但是有些情况下, %d %f 有特别的用处。比如,打印数字的时候,我们指定宽度,而且不足宽度,希望补零,而不是补空格,就可以这样
1 2 3 | '税前薪资:%010d 元' % 100000 '税前薪资:%010d 元' % 10000 '税前薪资:%010d 元' % 1000 |
可以得到如下结果
1 2 3 | 税前薪资: 0000100000 元 税前薪资: 0000010000 元 税前薪资: 0000001000 元 |
对于小数的格式化,通常使用 %f,如下
1 2 3 | '税前薪资:%010f 元' % 1000.4522 '税前薪资:%010f 元' % 1008.6621 '税前薪资:%010f 元' % 1009.3351 |
可以得到如下结果
1 2 3 | 税前薪资: 1000.452200 元 税前薪资: 1008.662100 元 税前薪资: 1009.335100 元 |
如果我们想保留小数点后面2位数字,就可以加上 .2 像这样
1 2 3 | '税前薪资:%010.2f 元' % 1000.4522 '税前薪资:%010.2f 元' % 1008.6621 '税前薪资:%010.2f 元' % 1009.3351 |
可以得到如下结果
1 2 3 | 税前薪资: 0001000.45 元 税前薪资: 0001008.66 元 税前薪资: 0001009.34 元 |
另外白月黑羽Python3教程中不断在加入视频讲解帮助大家学习Python,欢迎大家一起学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理