当前位置:首页 » 《随便一记》 » 正文

【Python基础篇002】:超详细的格式化输出(format的基本玩法)

17 人参与  2023年03月29日 19:13  分类 : 《随便一记》  评论

点击全文阅读


目录

前言:

??一、什么是format

一、format的基本玩法

??format玩法一:按顺序输出(按照{}的顺序依次匹配括号中的值)

??format玩法二:按索引输出

??format玩法三:通过参数名来匹配参数(也叫做使用关键字传递参数)

??format玩法四:通过索引,参数名来混搭进行使用

??format玩法需要注意的常见错误(切记,切记)

错误一

错误二

??二、format的进阶玩法

??玩法五、通过对象的属性(详细见代码注释)

??玩法六、支持对参数部分引用

??玩法七、使用format 使结果保留两位小数

??玩法八、 format中格式的处理

?? 玩法九、字符填充

?? 玩法十:对列表(list)、字典(dic)的拆分

结语:


前言:


本篇博客主要向各位小伙伴们介绍的Python中✨✨<格式化输出详解(format的基本玩法)>✨✨,带各位掌握Python基础,希望各位小伙伴们能够在这里收获到更多知识!让我们一起学习!一起进步???

作者希望:由于博主水平限制,博客难免会有错误和不准之处,我也非常希望各位小伙伴能够在留言区指出。让我们一起共勉。

             最后如果觉得博主文章还不错的话,??请三连支持一下哦??

0ecbbf8cecf44296a3446fa5c0bae35e.gif

??一、什么是format

format是字符串内嵌字符串内嵌:字符串中再嵌套字符串,加入双引号或单引号的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串

一、format的基本玩法

??format玩法一:按顺序输出(按照{}的顺序依次匹配括号中的值)

>>>s = '年龄 {} ,爱好{},性别 {}'.format(18,'发呆','男')>>>print(s)年龄18,爱好发呆,性别男

??format玩法二:按索引输出

当数据多个重复的时候按索引来:例如以下代码爱好和喜欢相同(都是发呆)且发呆对应索引是1,所以大括号里可以用1来指向要被替换数据(发呆)在format()中的索引

>>>s = '年龄 {0} ,爱好{1},性别 {2},喜欢{1}'.format(18,'发呆','男')>>>print(s)年龄18,爱好发呆,性别男,喜欢发呆

??format玩法三:通过参数名来匹配参数(也叫做使用关键字传递参数)

>>>hobby = input('请输入你的爱好:')>>>s = '年龄{age},爱好{hobby},性别{sex}'.format(hobby = hobby,sex = 男,age = 18)>>>print(s)请输入你的爱好:发呆年龄18,爱好发呆,性别男

??format玩法四:通过默认,参数名来混搭进行使用

代码一:

hobby = input('请输入你的爱好:')s = '爱好{hobby},性别{}'.format('男',hobby = hobby)print(s)、输出结果爱好发呆,性别男

??format玩法需要注意的常见错误(切记,切记)

✨错误一✨

代码一如果写成以下代码就会报错:仔细观察代码二与代码一的区别

代码二:

hobby = input('请输入你的爱好:')s = '爱好{hobby},性别{}'.format(hobby = hobby,'男')print(s)报错如下:s = '爱好{hobby},性别{}'.format(hobby = hobby,'男')                                                      ^SyntaxError: positional argument follows keyword argument

为什么我们将.format(hobby = hobby , '男')更改为.format('男' , hobby = hobby)
就会报错呢??

❣️那是因为命名的参数(变量)必须写到最后。否则会编译报错❣️hobby是我们命名的一个参数所以必须放在最后。

✨错误二✨

❣️❣️不可以索引和默认格式化混合使用:

所以以下代码均会报错:

>>>s = '爱好{},性别{1}'.format('发呆','男')>>>print(s)报以下错误:ValueError: cannot switch from automatic field numbering to manual field specification
>>>s = '爱好{},性别{0}'.format('男','发呆')>>>print(s)报以下错:ValueError: cannot switch from automatic field numbering to manual field specification

??二、format的进阶玩法

??玩法五、通过对象的属性(详细见代码注释)

#首先我们定义一个函数Names()在函数内定义一个局部变量a>>>def Names():>>>    a = '周周'#然后将 a 调用出来做为关键字传参>>>s = '我叫{names.a}'.format(names = Names)我叫周周

??玩法六、支持对参数部分引用

可以通过索引对参数的部分进行取值。如:s = '1男生1'我们只需要'男'这一部分我们就可以采用切片s[1]将其切出,再传递到对应部分。

>>>char = '性别{s[1]}'.format(s = '1男生1')>>>print(char)性别男

??玩法七、使用format 使结果保留两位小数

一般需要使用 (:. 2f),在用%进行格式化时我们使用的是(%.2f )?操作方法如下

>>>s1 = 'π是{:.2f}'.format(3.1415926)>>>print(s1)>>>s2 = 'π是%.2f'% 3.1415926>>>print(s2)π是3.14π是3.14

同时这种方法还可以用于字符串截取,不过数字后面就不能加f了?操作方法如下?

#{:1}指截取索引为[0:1]的字符(顾头不顾尾)s = '性别{:.1}'.format('男生122')#{:2}指截取索引为[0:2]的字符(顾头不顾尾)m = '性别{:.2}'.format('男生122')print(s)print(m)性别男性别男生

??玩法八、 format中格式的处理

在占位符中还可以有格式化控制符,对字符串的格式进行更加精准 的控制。格式化控制符位于占位符索引或占位符名字的后面,之间用冒号分隔,语法:{参数序号:格式控制符}或{参数名:格式控制符}。字符串的格式化控制符及其说明如下表所示:

 ?操作方法如下表:?

>>> format(3.1415936)'3.1415936'>>> str(3.1415926)'3.1415926'#字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐>>>print(format('test', '<20'))>>>print(format('test', '>20'))>>>print(format('test', '^20'))test                                test        test #整形数值可以提供的参数有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None>>> format(3,'b') #转换成二进制'11'>>> format(97,'c') #转换unicode成字符'a'>>> format(11,'d') #转换成10进制'11'>>> format(11,'o') #转换成8进制'13'>>> format(11,'x') #转换成16进制 小写字母表示'b'>>> format(11,'X') #转换成16进制 大写字母表示'B'>>> format(11,'n') #和d一样'11'>>> format(11) #默认和d一样'11'#浮点数可以提供的参数有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None>>> format(314159267,'e') #科学计数法,默认保留6位小数'3.141593e+08'>>> format(314159267,'0.2e') #科学计数法,指定保留2位小数'3.14e+08'>>> format(314159267,'0.2E') #科学计数法,指定保留2位小数,采用大写E表示'3.14E+08'>>> format(314159267,'f') #小数点计数法,默认保留6位小数'314159267.000000'>>> format(3.14159267000,'f') #小数点计数法,默认保留6位小数'3.141593'>>> format(3.14159267000,'0.8f') #小数点计数法,指定保留8位小数'3.14159267'>>> format(3.14159267000,'0.10f') #小数点计数法,指定保留10位小数'3.1415926700'>>> format(3.14e+1000000,'F')  #小数点计数法,无穷大转换成大小字母'INF'#g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数>>> format(0.00003141566,'.1g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点'3e-05'>>> format(0.00003141566,'.2g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留1位小数点'3.1e-05'>>> format(0.00003141566,'.3g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留2位小数点'3.14e-05'>>> format(0.00003141566,'.3G') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点,E使用大写'3.14E-05'>>> format(3.1415926777,'.1g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留0位小数点'3'>>> format(3.1415926777,'.2g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留1位小数点'3.1'>>> format(3.1415926777,'.3g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留2位小数点'3.14'>>> format(0.00003141566,'.1n') #和g相同'3e-05'>>> format(0.00003141566,'.3n') #和g相同'3.14e-05'>>> format(0.00003141566) #和g相同'3.141566e-05'

?? 玩法九、字符填充

可通过(: 符号^数字)进行字符串的填充。 其中数字为填充后的字符串总长度操作如下:

s = "{:*^10}".format('12345')print(s) **12345***s = "{:-^20}".format('123456')print(s)-------123456-------

但是如果数字{要求的长度}小于字符串的长度,则不进行填充操作

#这里要求字符串的长度是3,但是已经是5了,所以不会填充s = "{:*^3}".format('12345')print(s)12345

?? 玩法十:对列表(list)、字典(dic)的拆分

在format格式化时,可使用* 或者 ** 进行对list、dic拆分。

>>>foods = ['鱼', '虾', '肉']>>>s = '我爱吃{}和{}和{}'.format(*foods)>>>print(s)我爱吃鱼和虾和肉>>>foods = ['鱼', '虾', '肉']>>>s = '我爱吃{2}和{0}和{1}'.format(*foods)>>>print(s)我爱吃鱼和虾和肉>>>dict_temp = {'爱好':'发呆','姓名':'周周'}# 字典需要用 ** 进行拆分>>>s = '我叫{姓名},爱好{爱好}'.format(**dict_temp)>>>print(s)我叫周周,爱好发呆

结语:

???感谢各位友友能够看到这里???

提醒友友们一句:看懂了不是懂一定要自己实际操作哇这样才能更好的理解和吸收。
最后来一句:一个人可以在任何他怀有无限热忱的事情上成功,让我们一起进步吧
✨✨

            watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Zyo5LiL5ZGo5ZGob3Zv,size_20,color_FFFFFF,t_70,g_se,x_16        


点击全文阅读


本文链接:http://zhangshiyu.com/post/57186.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1