【Python学习笔记】字符串格式化
1. printf 风格
这种格式化语法 和 传统的C语言printf函数 一样 。
salary = input('请输入薪资:')# 计算出缴税额,存入变量tax
tax = int(salary) *25/100 # 计算出税后工资,存入变量aftertax
aftertax = int(salary) *75/100 print('税前薪资:%s元,缴税:%s元,税后薪资:%s元' %(salary,tax,aftertax))
其中 %s 就是模板中的占位符,表示这个位置先占着,待会儿要有数据填入到这里。
然后再提供一个元组,里面依次存放需要填入到 %s 位置 的数据。
这里是使用变量 (salary,tax,aftertax)
。
%s 是一种格式化符号, Python 解释器 看到 %s , 就会调用内置函数 str(),并将对应的格式化对象作为参数传入 , 返回的结果字符串填入对应占位符。简单说 %s 位置填入的结果,就是调用str函数的返回值。
str()内置函数的参数 可以是任何类型的对象,比如:字符串、 整数、 浮点数、列表、元组 等等,都可以。
所以 %s 为占位符, 对应的格式化对象, 不仅仅是字符串,还可以是整数、 浮点数、列表、元组 等等。
- 格式化字符串里面占位符的个数 必须 和 后面对应的格式化对象个数相同
如果占位符是1个,后面的元组里面的格式化对象就应该是1个。像这样
'税前薪资:%s 元' % (salary,)
还记得,我们说过, 元组里面只有1个元素,后面别忘了加个逗号。
像这种只有一个格式化对象的情况下,可以直接就用格式化对象,不需要放到元组里面,像这样
'税前薪资:%s 元' % salary
指定宽度和对齐
如果我们需要将下面这样的3个字符串进行格式化
print('税前薪资:%s 元' % 100000)
print('税前薪资:%s 元' % 10000)
print('税前薪资:%s 元' % 1000)
print('---------------------------------')
print('税前薪资:%10s 元' % 100000)
print('税前薪资:%10s 元' % 10000)
print('税前薪资:%10s 元' % 1000)
print('---------------------------------')
print('税前薪资:%-10s 元' % 100000)
print('税前薪资:%-10s 元' % 10000)
print('税前薪资:%-10s 元' % 1000)
得到的结果如下
$ python main.py
税前薪资:100000 元
税前薪资:10000 元
税前薪资:1000 元
---------------------------------
税前薪资: 100000 元
税前薪资: 10000 元
税前薪资: 1000 元
---------------------------------
税前薪资:100000 元
税前薪资:10000 元
税前薪资:1000 元
%10s
中的 10
就是指定了格式化结果至少10个字符。
如果希望是左边对齐,而不是右边对齐,就可以加一个 -
%d 和 %f
占位符除了 %s ,还有其它的一些。
常见的是 %d 和 %f 。
%d 用在格式化对象是整数的情况 ,比如
'税前薪资:%d 元' % 10000
%f 用在 格式化对象 是 浮点数的情况,比如
'税前薪资:%f 元' % 10000.32
%s 也可以用来格式化 整数和浮点数,但是有些情况下, %d %f 有特别的用处。
比如,打印数字的时候,我们指定宽度,而且希望不足宽度 补零
,而不是补空格,就可以这样
'税前薪资:%010d 元' % 100000
'税前薪资:%010d 元' % 10000
'税前薪资:%010d 元' % 1000
可以得到如下结果
税前薪资:0000100000 元
税前薪资:0000010000 元
税前薪资:0000001000 元
对于小数的格式化,通常使用 %f,如下
'税前薪资:%010f 元' % 1000.4522
'税前薪资:%010f 元' % 1008.6621
'税前薪资:%010f 元' % 1009.3351
可以得到如下结果
税前薪资:1000.452200 元
税前薪资:1008.662100 元
税前薪资:1009.335100 元
如果我们想保留小数点后面2位数字,就可以加上 .2
像这样
'税前薪资:%010.2f 元' % 1000.4522
'税前薪资:%010.2f 元' % 1008.6621
'税前薪资:%010.2f 元' % 1009.3351
可以得到如下结果
税前薪资:0001000.45 元
税前薪资:0001008.66 元
税前薪资:0001009.34 元
printf格式化官网描述
2. f-string 格式化
f-string 格式化就是在字符串模板前面加上f,然后占位符使用{} ,里面直接放入对应的数据对象。Python解释器是3.6 以后的版本才支持。
如下所示
f'税前薪资是:{salary}元, 缴税:{tax}元, 税后薪资是:{aftertax}元'
完整的代码如下
完整的代码如下
salary = input('请输入薪资:')# 计算出缴税额,存入变量tax
tax = int(salary) * 25/100# 计算出税后工资,存入变量aftertax
aftertax = int(salary) * 75/100print(f'税前薪资是:{salary}元, 缴税:{tax}元, 税后薪资是:{aftertax}元')
运行一下,可以发现输出结果一样。这种方式更加的直观明了。
指定宽度
同样,为了输出对齐,我们需要指定填入的字符串的宽度。
方法是,在括号里面的变量后面加上 :宽度值
比如
salary = 10000
print(f'{salary:10}')
f'{salary:10}'
就指定了 宽度为10 个字符, 如果填入的字符串不足10个字符,就在前面加上空格
比如上面的输出结果就是
>>> salary = 10000
>>> print(f'{salary:10}')10000
完整的一个示例程序如下
salary = 8000
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:8}元, 缴税:{tax:8}元, 税后薪资是:{aftertax:8}元')
运行一下结果如下:
税前薪资是: 8000元, 缴税: 2000.0元, 税后薪资是: 6000.0元
这样,整体就显得很清爽。
左右对齐
上面的输出结果是不足在前面补空格,对于数字对象来说,缺省为 右边对齐
,而字符串缺省为 左边对齐
。
比如
下面这个表达式
f"|{'abc':10}|{300:10}|"
结果如下
'|abc | 300|'
指定左右对齐,可以在括号里使用 <
>
符号
箭头朝左就是左对齐,箭头朝右就是右对齐
比如
下面这个表达式
f"|{'abc':>10}|{300:<10}|"
结果如下
'| abc|300 |'
上面的薪资计算代码中,要打印的数字左对齐,就可以这样写
def calcTax(salary):tax = int(salary) *25/100 aftertax = int(salary) *75/100 print(f'税前薪资是:{salary:<8}元, 缴税:{tax:<8}元, 税后薪资是:{aftertax:<8}元')calcTax(8320)
calcTax(15023)
calcTax(100030)
运行结果如下:
税前薪资是:8320 元, 缴税:2080.0 元, 税后薪资是:6240.0 元
税前薪资是:15023 元, 缴税:3755.75 元, 税后薪资是:11267.25元
税前薪资是:100030 元, 缴税:25007.5 元, 税后薪资是:75022.5 元
小数点后位数
如果我们想指定小数点后保留几位,可以像这样 {salary:<8.1f}
后面的.1f
就表示小数点后面保留1位
def calcTax(salary):tax = int(salary) *25/100 aftertax = int(salary) *75/100 print(f'税前薪资是:{salary:8.1f}元, 缴税:{tax:8.1f}元, 税后薪资是:{aftertax:8.1f}元')calcTax(8320)
calcTax(15023)
calcTax(100030)
运行结果如下:
税前薪资是: 8320.0元, 缴税: 2080.0元, 税后薪资是: 6240.0元
税前薪资是: 15023.0元, 缴税: 3755.8元, 税后薪资是: 11267.2元
税前薪资是:100030.0元, 缴税: 25007.5元, 税后薪资是: 75022.5元
不足补零
如果我们想在不足指定宽度的时候不是补空格,而是补数字0,可以像这样 {salary:08}
def calcTax(salary):tax = int(salary) *25/100 aftertax = int(salary) *75/100 print(f'税前薪资是:{salary:08}元, 缴税:{tax:08.1f}元, 税后薪资是:{aftertax:08.1f}元')calcTax(8320)
calcTax(15023)
calcTax(100030)
运行结果如下:
税前薪资是:00008320元, 缴税:002080.0元, 税后薪资是:006240.0元
税前薪资是:00015023元, 缴税:003755.8元, 税后薪资是:011267.2元
税前薪资是:00100030元, 缴税:025007.5元, 税后薪资是:075022.5元
上面的例子是对 数字
的不足补零,如果要对 字符串
不足补零,就应该 使用符号 <
或者 >
同时指定左右对齐方式。
>>> var = '34324'
>>> f'{var:08}'
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: '=' alignment not allowed in string format specifier
>>> f'{var:<08}'
'34324000'
>>> f'{var:>08}'
'00034324'
16进制格式化数字
# 用 x 表示格式化为16进制,并采用小写格式
f'数字65535的16进制表示为:{65535:x}' # 用 X 表示格式化为16进制,并采用大写格式
f'数字65535的16进制表示为:{65535:X}'
字符串内容里有花括号
采用 f-string 方式格式化的 字符串内容本身就有 {
或者 }
符号,一定要 双写
进行转义,否则会被当成是 格式化占位符。
比如 我们要格式化的字符串为 文章中 { 符号 出现了 xx 次
times1 = 1000
times2 = 2000print(f'文章中 {{ 符号 出现了 {times1} 次')
print(f'文章中 }} 符号 出现了 {times2} 次')
相关文章:
【Python学习笔记】字符串格式化
1. printf 风格 这种格式化语法 和 传统的C语言printf函数 一样 。 salary input(请输入薪资:)# 计算出缴税额,存入变量tax tax int(salary) *25/100 # 计算出税后工资,存入变量aftertax aftertax int(salary) *75/100 print(税前薪资&…...

RIP,EIGRP,OSPF区别
1. 动态路由协议的作用是什么? 2. 路由协议都有哪些种类? 3. 如何判断路由协议的优劣? -- RIP,EIGRP,OSPF - 动态路由协议 -- 路由协议 - 路由器上的软件 -- 帮助路由器彼此之间同步路由表 -- 相互的传递…...

驱动day2作业
编写应用程序控制三盏灯亮灭 head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #define PHY_RCC 0x50000A28#endif demo1.c #includ…...
MySQL基本操作之创建数据表
设计表: 学生表(Student): 学号(StudentID)- 主键,用于唯一标识每个学生姓名(Name)性别(Gender)年龄(Age)出生日期(BirthDate)地址(Address)电话(Phone)邮箱(Email)课程表(Course): 课程号(CourseID)- 主键,用于唯一标识每门课程课程名(CourseNam…...
rk平台android12修改dp和喇叭同时输出声音
客户的rk3588主板android12系统,要求接上type-c 进行dp输出显示以后,dp端和主板端都有声音。rk原有系统默认是接上dp显示以后,主板的喇叭声音会被切掉,导致没有声音。要让喇叭和dp同时输出声音需要做如下修改: --- a/…...

经典网络模型
Alexnet VGG VGG的启示 VGGNet采用了多次堆叠3x3的卷积核,这样做的目的是减少参数的数量。 例如,2个3x3的卷积核效果相当于1个5x5的卷积核效果,因为它们的感受野(输入图像上映射区域的大小)相同。但2个3x3卷积核的参数…...

SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造
在某些设计情况中,如果一些条件为真,则我们不想执行检验。换句话说,这就像是一个异步的复位,使得检验在当前时刻不工作。SVA提供了关键词“ disable iff来实现这种检验器的异步复位。“ disable iff”的基本语法如下。 disable iff (expression) <property definition> …...
C++设计模式之MVC
MVC(Model-View-Controller)是一种经典的软件架构模式,用于组织和分离应用程序的不同部分,以提高代码的可维护性、可扩展性和重用性。MVC模式将应用程序分为三个主要组成部分: Model(模型)&…...
Windows 下Tomcat监测重启
echo off setlocal enabledelayedexpansion rem 链接 set URL"localhost:8080/XXX.jsp" rem tomcat目录 set TOMCAT_HOMED:\apache-tomcat-7.0.100-windows-x64\apache-tomcat-7.0.100 rem 关闭tomcat命令的路径 set CLOSE_CMD%TOMCAT_HOME%\bin\shutdown.bat rem 启…...

数据库管理-第112期 Oracle Exadata 03-网络与ILOM(20231020)
数据库管理-第112期 Oracle Exadata 03-网络与ILOM(202301020) 在Exadata中,除了对外网络以外,其余网络都是服务于一体机内部各组件的网络,本期对这些网络的具体情况和硬件管理相关做一个讲解。 1 网络分类 1.1 生产…...

Kubeadm部署k8s集群 kuboard
目录 主机准备 主机配置 修改主机名(三个节点分别执行) 配置hosts(所有节点) 关闭防火墙、selinux、swap、dnsmasq(所有节点) 安装依赖包(所有节点) 系统参数设置(所有节点) 时间同步(所有节点) 配…...

虚拟机如何联网【NAT】
查看VMWARE的IP地址 #进入root用户 su -#更改虚拟网卡设置界面 vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改ONBOOT为yes BOOTPROTO为static IPADDR为前面的网段 192.168.211.xx (xx为自己设置的,可以随意设置,前面的为前面查看的IP地址的前…...

机器学习,神经网络中,自注意力跟卷积神经网络之间有什么样的差异或者关联?
如图 6.38a 所示,如果用自注意力来处理一张图像,假设红色框内的“1”是要考虑的像素,它会产生查询,其他像素产生 图 6.37 使用自注意力处理图像 键。在做内积的时候,考虑的不是一个小的范围,而是整张图像的…...

这件事,准备考PMP的都必须知道
大家好,我是老原。 新的一月,新的困惑。最近接到的咨询很多,但的确出现了差异化的特质。 以前的粉丝朋友上来就问,我现在是项目经理,主要负责产品研发,我是考PMP还是NPDP好? 现在的粉丝朋友会…...

elasticsearch常用命令
Elasticsearch概念 ElasticsearchmysqlIndex(索引)数据库Type(类型)表Documents(文档)行Fields列 常用命令 索引 # 索引初始化,number_of_shards:分片数,不可修改;number_of_replicas:副本数,可修改 PUT lagou {"settings…...

2000-2021年上市公司MA并购溢价计算数据(含原始数据+Stata代码)
2000-2021年上市公司M&A并购溢价计算(原始数据Stata代码) 1、时间:2000-2021年 2、范围:沪深A股上市公司 3、指标: 原始数据指标:事件ID、公司ID、证券代码、业务编码、上市公司交易地位编码、首次公…...

移动端1px-从基本原理到开源解决方案介绍
1px 不够准确,应该说成 1 物理像素 为什么有 1px 这个问题?实现 1px 有哪些方法?这些方法分别有哪些优缺点?开源项目中使用的哪些解决方案?如何在项目中处理 1px 的相关问题? 基本概念 首先,我们…...

Linux——shell外壳程序
shell外壳程序 1. 什么是shell外壳程序 Linux严格意义上说的是一个操作系统,我们称之为“核心 “ ,但我们一般用户,不能直接使用核心。 而是通过核心的“外壳”程序,也就是所谓的shell。 shell是所有外壳程序的统称 平时程序员…...

攻防世界web篇-Training-WWW-Robots
直接点击给出的地址,然后会转到另一个网页界面,在这个界面,已经给出了提示,robots.txt 在浏览器中,直接在地址的后面加上robots.txt,会进到下面这个界面 因为对php语言一窍不通,所以这里纯粹就…...

Docker是一个流行的容器化平台,用于构建、部署和运行应用程序。
文章目录 Web应用程序数据库服务器微服务应用开发环境持续集成和持续部署 (CI/CD)应用程序依赖项云原生应用程序研究和教育 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...