超详细的格式化输出(format的基本玩法)

一、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的基本玩法)

🔥操作方法如下表:🔥

超详细的格式化输出(format的基本玩法)
>>> format(3.1415936)
'3.1415936'
>>> str(3.1415926)
'3.1415926'
#&#x5B57;&#x7B26;&#x4E32;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x7684;&#x53C2;&#x6570;,&#x6307;&#x5B9A;&#x5BF9;&#x9F50;&#x65B9;&#x5F0F;&#xFF0C;<是左对齐,>&#x662F;&#x53F3;&#x5BF9;&#x9F50;&#xFF0C;^&#x662F;&#x5C45;&#x4E2D;&#x5BF9;&#x9F50;
>>>print(format('test', '<20'))>>>print(format('test', '>20'))
>>>print(format('test', '^20'))
test
                test
        test

#&#x6574;&#x5F62;&#x6570;&#x503C;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x7684;&#x53C2;&#x6570;&#x6709; 'b' 'c' 'd' 'o' 'x' 'X' 'n' None
>>> format(3,'b') #&#x8F6C;&#x6362;&#x6210;&#x4E8C;&#x8FDB;&#x5236;
'11'
>>> format(97,'c') #&#x8F6C;&#x6362;unicode&#x6210;&#x5B57;&#x7B26;
'a'
>>> format(11,'d') #&#x8F6C;&#x6362;&#x6210;10&#x8FDB;&#x5236;
'11'
>>> format(11,'o') #&#x8F6C;&#x6362;&#x6210;8&#x8FDB;&#x5236;
'13'
>>> format(11,'x') #&#x8F6C;&#x6362;&#x6210;16&#x8FDB;&#x5236; &#x5C0F;&#x5199;&#x5B57;&#x6BCD;&#x8868;&#x793A;
'b'
>>> format(11,'X') #&#x8F6C;&#x6362;&#x6210;16&#x8FDB;&#x5236; &#x5927;&#x5199;&#x5B57;&#x6BCD;&#x8868;&#x793A;
'B'
>>> format(11,'n') #&#x548C;d&#x4E00;&#x6837;
'11'
>>> format(11) #&#x9ED8;&#x8BA4;&#x548C;d&#x4E00;&#x6837;
'11'

#&#x6D6E;&#x70B9;&#x6570;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x7684;&#x53C2;&#x6570;&#x6709; 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None
>>> format(314159267,'e') #&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x9ED8;&#x8BA4;&#x4FDD;&#x7559;6&#x4F4D;&#x5C0F;&#x6570;
'3.141593e+08'
>>> format(314159267,'0.2e') #&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x6307;&#x5B9A;&#x4FDD;&#x7559;2&#x4F4D;&#x5C0F;&#x6570;
'3.14e+08'
>>> format(314159267,'0.2E') #&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x6307;&#x5B9A;&#x4FDD;&#x7559;2&#x4F4D;&#x5C0F;&#x6570;&#xFF0C;&#x91C7;&#x7528;&#x5927;&#x5199;E&#x8868;&#x793A;
'3.14E+08'
>>> format(314159267,'f') #&#x5C0F;&#x6570;&#x70B9;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x9ED8;&#x8BA4;&#x4FDD;&#x7559;6&#x4F4D;&#x5C0F;&#x6570;
'314159267.000000'
>>> format(3.14159267000,'f') #&#x5C0F;&#x6570;&#x70B9;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x9ED8;&#x8BA4;&#x4FDD;&#x7559;6&#x4F4D;&#x5C0F;&#x6570;
'3.141593'
>>> format(3.14159267000,'0.8f') #&#x5C0F;&#x6570;&#x70B9;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x6307;&#x5B9A;&#x4FDD;&#x7559;8&#x4F4D;&#x5C0F;&#x6570;
'3.14159267'
>>> format(3.14159267000,'0.10f') #&#x5C0F;&#x6570;&#x70B9;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x6307;&#x5B9A;&#x4FDD;&#x7559;10&#x4F4D;&#x5C0F;&#x6570;
'3.1415926700'
>>> format(3.14e+1000000,'F')  #&#x5C0F;&#x6570;&#x70B9;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x65E0;&#x7A77;&#x5927;&#x8F6C;&#x6362;&#x6210;&#x5927;&#x5C0F;&#x5B57;&#x6BCD;
'INF'

#g&#x7684;&#x683C;&#x5F0F;&#x5316;&#x6BD4;&#x8F83;&#x7279;&#x6B8A;&#xFF0C;&#x5047;&#x8BBE;p&#x4E3A;&#x683C;&#x5F0F;&#x4E2D;&#x6307;&#x5B9A;&#x7684;&#x4FDD;&#x7559;&#x5C0F;&#x6570;&#x4F4D;&#x6570;&#xFF0C;&#x5148;&#x5C1D;&#x8BD5;&#x91C7;&#x7528;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#x683C;&#x5F0F;&#x5316;&#xFF0C;&#x5F97;&#x5230;&#x5E42;&#x6307;&#x6570;exp&#xFF0C;&#x5982;&#x679C;-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数>>> format(0.00003141566,'.1g') #p=1,exp=-5 ==&#x300B; -4<=exp<p不成立,按科学计数法计数,保留0位小数点 '3e-05'>>> format(0.00003141566,'.2g') #p=1,exp=-5 ==&#x300B; -4<=exp<p不成立,按科学计数法计数,保留1位小数点 '3.1e-05'>>> format(0.00003141566,'.3g') #p=1,exp=-5 ==&#x300B; -4<=exp<p不成立,按科学计数法计数,保留2位小数点 '3.14e-05'>>> format(0.00003141566,'.3G') #p=1,exp=-5 ==&#x300B; -4<=exp<p不成立,按科学计数法计数,保留0位小数点,e使用大写 '3.14e-05'>>> format(3.1415926777,'.1g') #p=1,exp=0 ==&#x300B; -4<=exp<p成立,按小数计数法计数,保留0位小数点 '3'>>> format(3.1415926777,'.2g') #p=1,exp=0 ==&#x300B; -4<=exp<p成立,按小数计数法计数,保留1位小数点 '3.1'>>> format(3.1415926777,'.3g') #p=1,exp=0 ==&#x300B; -4<=exp<p成立,按小数计数法计数,保留2位小数点 '3.14'>>> format(0.00003141566,'.1n') #&#x548C;g&#x76F8;&#x540C;
'3e-05'
>>> format(0.00003141566,'.3n') #&#x548C;g&#x76F8;&#x540C;
'3.14e-05'
>>> format(0.00003141566) #&#x548C;g&#x76F8;&#x540C;
'3.141566e-05'
</=exp<p成立,按小数计数法计数,保留2位小数点></=exp<p成立,按小数计数法计数,保留1位小数点></=exp<p成立,按小数计数法计数,保留0位小数点></=exp<p不成立,按科学计数法计数,保留0位小数点,e使用大写></=exp<p不成立,按科学计数法计数,保留2位小数点></=exp<p不成立,按科学计数法计数,保留1位小数点></=exp<p不成立,按科学计数法计数,保留0位小数点></=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数></20'))></是左对齐,>

🎉🎉 玩法九、字符填充

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

`
s = “{:^10}”.format(‘12345’)
print(s)
12345**

s = “{:-^20}”.format(‘123456’)
print(s)

Original: https://www.cnblogs.com/zaixiazhouzhou/p/16673788.html
Author: 在下周周ovo
Title: 超详细的格式化输出(format的基本玩法)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/601546/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球