格式化字符串你都懂了吗

news2024/11/16 18:47:33

文章目录

  • 前言
  • 一、什么是格式化字符串?
  • 二、使用 % 格式化字符串
  • 三、使用 format() 格式化字符串
  • 总结


前言

今天跟大家聊聊字符串的格式化这部分内容。乍一听“格式化”这三个字,有的初学者可能会懵:难道这是要清空字符串的节奏?
在这里插入图片描述
其实不是的,恰恰相反,格式化字符串是为了让字符串变的更美观、更灵活。接下来就给大家详细介绍格式化字符串的概念以及具体用法。


一、什么是格式化字符串?

格式化字符串是将现有的字符串按照指定模板嵌入,再生成固定格式的新字符串。

为什么要这样做呢?主要还是开发上很多场景需要用到:比如在某度进行关键字搜索问题时,每次发送不同的关键字返回不同结果,但其实发给后台的链接格式是一样的,也就是模板一致,只是里面的关键字参数不同,也就是俗称的套娃。比如下图所示:
在这里插入图片描述

任何网站基本都是遵循这样的规律进行开发,所以这就是为什么需要学习字符串的格式化处理。

二、使用 % 格式化字符串

在Python中提供了两种方法来格式化字符串,先说第一种:使用 % 操作符,语法格式如下:

'%[-][+][0][m][.n]格式化字符'%exp

参数说明

  • :可选参数,用于指定左对齐,正数前方无符号,负数前方加负号。
  • +:可选参数,用于指定右对齐,正数前方加正号,负数前方加负号。
  • 0:可选参数,表示右对齐,正数前方无符号,负数前方加负号,用 0 填充空白处(一般与 m 参数一起使用)。
  • m:可选参数,表示占有宽度。
  • .n:可选参数,表示小数点后保留的位数。
  • 格式化字符:用于指定要格式化的字符是什么类型,常见的格式化字符类型及表示方法如下表所示。
格式化字符说明格式化字符说明
%s字符串%o八进制整数
%d 或者 %i十进制整数%e指数(基底写为e)
%x十六进制整数%E指数(基底写为E)
%f 或者 %F浮点数%%字符%
  • exp:要转换的项。如果要指定多个,需要通过元组的形式进行指定。

是不是看到这么多参数和格式化字符,瞬间感到很复杂呢?
在这里插入图片描述
其实一点也不难,我们可以把这些参数拆开来看,既然里面很多参数都是可选的,也就是可有可无,那就先把这些参数全部去掉再看,语法就变成了 ‘%格式化字符’%exp,接下来看看代码示例,如下图所示:
在这里插入图片描述
看完上图代码,是不是感觉简单多了,至于那些可选参数则可以根据实际需求进行添加。比如上图代码中出现的小数有多位,如果只想保留两位有效数字,那就可以用到可选参数 .n,代码如下图所示:
在这里插入图片描述
同理,其余的可选参数,比如 m 占有宽度,指的是格式化字符串当前占有的宽度是多少字符。还是以刚才的浮点数格式化为例,‘3.14’ 本身占据 4 个字符的宽度,我们也可以设置的更宽,代码如下图所示:
在这里插入图片描述
其余的可选参数以及格式化字符类型用法就不再逐一演示了,大家有空可以自己多练练。

🌱 说明由于使用 % 操作符是早期Python中提供的方法,自从Python2.6版本开始,字符串对象提供了 format() 方法对字符串进行格式化。现在Python社区也推荐使用这种方法。所以建议大家重点学习 format() 方法的使用

三、使用 format() 格式化字符串

format() 方法语法格式如下:

str.format(args)

参数说明

  • str:用于指定字符串的显示样式(即模板)。
  • args:用于指定要转换的项,如果有多项,则用逗号分隔。

下面重点介绍创建模板。在创建模板时,需要使用 “{}” 和 “:” 指定占位符,语法格式如下:

{[index][:[[fill]align][sign][#][width][.precision][type]}

参数说明

  • index:可选参数,用于指定要设置格式的对象在参数列表中的索引位置,索引值从 0 开始。如果省略,则根据值的先后顺序自动分配
  • fill:可选参数,用于指定空白处填充的字符。
  • align:可选参数,用于指定对齐方式(值为 “<” 时表示内容左对齐;值为 “>” 时表示内容右对齐;值为 “^” 时表示内容居中),需要配合 width 一起使用。
  • sign:可选参数,用于指定有无符号数(值为 “+” 表示正数加正号,负数加负号;值为 “-” 表示正数不变,负数加负号;值为空格表示正数加空格,负数加负号)。
  • #:可选参数,用于对二进制数、八进制数和十六进制数,如果加上 #,表示会显示 0b/0o/0x 前缀,否则不显示前缀。
  • width:可选参数,用于指定所占宽度。
  • .precision:可选参数,用于指定保留的小数位数。
  • type:可选参数,用于指定类型。

format() 方法中常用的格式化字符如下表所示:

格式化字符说明格式化字符说明
s对字符串类型格式化b将十进制整数自动转换成二进制表示再格式化
d十进制整数o将十进制整数自动转换成八进制表示再格式化
c将十进制整数自动转换成对应的 Unicode 字符x 或者 X将十进制整数自动转换成十六进制表示再格式化
e 或者 E转换为科学计数法表示再格式化f 或者 F转换为浮点数(默认小数点后保留6位)再格式化

经历过上面的 % 操作符繁多的可选参数,再看到 format() 方法, 相信大家心里至少不会再懵。依葫芦画瓢,我们也先不看这些可选参数,统统划掉,语法就只剩下 ‘{}’.format(args)。代码示例如下图所示:
在这里插入图片描述
如果要格式化多个多个值,可以用到 index 可选参数,代码示例如下图所示:
在这里插入图片描述
看到上图,有的小伙伴可能会好奇:既然省略了,也可以格式化多个值,那为什么要多此一举,再弄个 index 参数呢?其实有的场景下,是需要使用索引的,比如下图代码所示:
在这里插入图片描述
🌱 说明当一个模板中,出现多个占位符时,指定索引位置的规范需统一,即全部采用手动指定,或者全部采用自动,否则会报错,如下图所示。
在这里插入图片描述
再看一个可选参数 align,用来指定对齐方式,需要结合 width 宽度一起使用,代码示例如下图所示:
在这里插入图片描述
以此类推,其余的可选参数及格式化字符类型,大家日后都可以根据自己的实际开发按需取用,就不再做演示了。


总结

以上就是给大家介绍的格式化字符串所有内容,里面需要着重理解并且熟练使用的就是 format() 方法。当然如果有小伙伴喜欢使用 % 操作符这种方法也完全可以使用。两种方法中都有很多可选参数,建议大家业余要多练习,不要死记硬背。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络管理之设备上线技术的发展现状和趋势

网络和网络设备无处不在 随着社会的发展和技术的进步&#xff0c;人类文明开始向信息时代演进&#xff0c;网络逐渐变成现代社会不可或缺的一部分&#xff0c;极大程度影响了人类的认知形式、思维方式与生活模式。从家庭网&#xff0c;到企业网&#xff1b;从无线网&#xff0…

Mysql MHA搭建

. 目录 机器配置 安装Docker Docker安装和启动Mysql8.0.26 搭建Mysql一主二从 设置三台机器免密访问 安装MHA 搭建问题记录 问题1 MHA验证主从复制报错Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation 问题2 MHA验证…

doris - 数仓 拉链表 按天全量打宽表性能优化

数仓 拉链表 按天全量打宽性能优化现状描述优化现状描述 1、业务历史数据可以变更 2、拉链表按天打宽 3、拉链表模型分区字段设计不合理&#xff0c;通用的过滤字段没有作为分区分桶字段 4、拉链表表数据量略大、模型数据分区不合理和服务器资源限制&#xff0c;计算任务执行超…

安装JupyterLab失败的解决方案

由于本人电脑安装的Python版本3.6比较低&#xff0c;所以可能存在下面两种方法都安装失败&#xff0c;最后给出一个简单省事的方法。Jupyter lab比Jupyter Notebook要好用&#xff0c;试了之后感觉跟VSCode一样的存在&#xff0c;所以还是值得安装来代替Jupyter Notebook使用。…

Ae:解释素材

所谓解释素材 Interpret Footage&#xff0c;就是通过修改素材的某些属性&#xff08;像素长宽比、帧速率、颜色配置文件及 Alpha 通道类型等&#xff09;&#xff0c;让它能更好地参与到合成中去。Ae菜单&#xff1a;文件/解释素材快捷键&#xff1a;Ctrl Alt G在项目面板里…

【C语言】编程初学者入门训练(13)

文章目录121. 小乐乐算最高分122. 小乐乐计算求和123. 小乐乐计算函数124. 小乐乐查找数字125. kiki学程序设计基础126. kiki算期末成绩127. kiki说祝福语128. kiki的最高分129. 求质数的个数130. kiki去重整数并排序121. 小乐乐算最高分 问题描述&#xff1a;小乐乐的老师BoB…

4.2 双点双向路由重发布

1. 实验目的 熟悉双点双向路由重发布的应用场景掌握双点双向路由重发布的配置方法2. 实验拓扑 双点双向路由重发布如图4-6所示: 图4-6:双点双向路由重发布 3. 实验步骤 IP地址的配置R1的配置 <Huawei>system-v…

关键路径、工期、总时差和自由时差精讲

关键路径法是在进度模型中&#xff0c;估算项目最短工期&#xff0c;确定逻辑网络路径进度灵活性大小的一种方法。①计算原理a.计算ES、EF&#xff1a;从网络计划起点节点开始&#xff0c;沿箭线方向依次向前推算&#xff0c;数值取大。b.计算LS、LF&#xff1a;从网络计划终点…

SVFormer:走进半监督动作识别的视觉 Transformer

出品人&#xff1a;Towhee 技术团队 顾梦佳 半监督学习&#xff08;SSL&#xff09;的动作识别是一个关键的视频理解任务&#xff0c;然而视频标注的高成本加大了该任务的难度。目前相关的方法主要研究了卷积神经网络&#xff0c;较少对于视觉 Transformers&#xff08;ViT&…

一个视频说清整个英语语法体系(重塑你的语法认知框架)

前言 绝大多数句子&#xff1a;什么 怎么样 几乎所有的英语句子&#xff1a;主语谓语 广义 “动作”&#xff1a;语法上的“动词” 主语(人或物) 谓语(“动作”发生了什么事情) 有哪些”动作“(动词)&#xff1f; 可以独立完成的动作&#xff1a;不及物动词 [主语不及物…

GEE学习笔记 七十九:【GEE之Python版教程十一】

列表在python中就是使用中括号包围的数据&#xff0c;比如[11,23,10]等。列表&#xff08;list&#xff09;是可变的&#xff0c;同时在python中还有集合&#xff08;set&#xff09;以及元组&#xff08;tuple&#xff09;和这个类似&#xff0c;不要把这些内容搞混。 运行下…

Maven怎样构建生命周期?

项目构建生命周期Maven的本质是一个项目管理工具&#xff0c;将项目开发和管理过程抽象成一个项目对象模型(POM)。Maven构建生命周期描述的是一次构建过程经历经历了多少个事件。对项目构建的生命周期划分为3套&#xff0c;其中clean负责清理工作&#xff0c;default负责核心工…

Git小乌龟每次推送拉取都弹窗和用户名密码报错(解决办法)

目录 一、小乌龟推送代码到云端用户名和密码报错 &#xff08;一&#xff09; 遇到问题 &#xff08;二&#xff09;解决办法 二、小乌龟每次推送拉取都要输入账号和密码 &#xff08;一&#xff09;遇到问题 &#xff08;二&#xff09;解决办法 一、小乌龟推送代码到云…

AlphaGo 和 ChatGPT有何相似之处? 附AlphaGo核心算法开源链接

AlphaGo 和 ChatGPT 是迄今为止最著名、最具开创性的两个 AI 系统之一。尽管它们被设计用于不同的目的&#xff0c;但它们共享一些重要的相似之处&#xff0c;包括使用深度学习、神经网络以及专注于达到人类水平表现等。而不久前&#xff0c; DeepMind 悄悄开源了AlphaGo的核心…

在windows安装MySQLworkbench

跑到官网安装MySQL :: MySQL Downloads select MySQL community server Recommended Download download the first installer here just start my download let’s open it and agree with the license agreement 安装&#xff0c;一直点next点到Account and Rolse 自己定密码…

C++学习笔记-变量类型

变量为我们提供了程序可以操作的命名存储。 C 中的每个变量都有一个特定的类型&#xff0c;它决定了变量内存的大小和布局; 可存储在该内存中的值范围; 以及可以应用于变量的操作集。 变量的名称可以由字母&#xff0c;数字和下划线字符组成。 它必须以字母或下划线开头。 大写…

【C语言每日一题】——倒置字符串

【C语言每日一题】——倒置字符串&#x1f60e;前言&#x1f64c;倒置字符串&#x1f64c;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神贯注的上吧&#xff01;&#xff01;&#xff01; &#x1f60a;作者简…

基于蜣螂算法改进的LSTM分类算法-附代码

基于蜣螂算法改进的LSTM分类算法 文章目录基于蜣螂算法改进的LSTM分类算法1.数据集2.LSTM模型3.基于蜣螂算法优化的RF4.测试结果5.Matlab代码摘要&#xff1a;为了提高LSTM数据的分类预测准确率&#xff0c;对LSTM中的参数利用蜣螂搜索算法进行优化。1.数据集 数据的来源是 UC…

让我们,从头到尾,通透I/O模型

什么是IO 一句话总结 IO就是内存和硬盘的输入输出 I/O 其实就是 input 和 output 的缩写&#xff0c;即输入/输出。 那输入输出啥呢&#xff1f; 比如我们用键盘来敲代码其实就是输入&#xff0c;那显示器显示图案就是输出&#xff0c;这其实就是 I/O。 而我们时常关心的磁盘…

网络层重点协议之IP协议(IPv4)

网络层的作用就是来路由的选择&#xff0c;规划传输的路径&#xff0c;其中网络层的重点协议就是IP协议。4位版本号版本号的取值只有4和64位首部长度描述了IP报头有多长&#xff0c;报头中有一个选项部分&#xff0c;是变长的&#xff0c;是可有可无的部分&#xff0c;所以IP报…