【Python基础篇002】:超详细的格式化输出

简介: 【Python基础篇002】:超详细的格式化输出

目录

前言:

🚀🚀一、什么是format

一、format的基本玩法

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

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

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

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

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

错误一

错误二

🎉🎉二、format的进阶玩法

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

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

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

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

🎉🎉 玩法九、字符填充

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

结语:


🚀🚀一、什么是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)
我叫周周,爱好发呆

相关文章
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 12」基础篇6 - 输入输出与格式化详解
本篇将详细介绍Python中的输入和输出函数,包括 `print()` 和 `input()` 函数的使用,涵盖格式化输出、类型转换及常见的字符串格式化方法。通过学习本篇,用户将掌握如何使用Python进行输入输出操作,并能灵活运用格式化输出处理数据。
60 1
【10月更文挑战第6天】「Mac上学Python 12」基础篇6 - 输入输出与格式化详解
|
1月前
|
Python
Python 格式化输出的高级技巧与应用
Python 格式化输出技术可让数据展示更加清晰易读。本文介绍了四种高级技巧:使用 `%` 占位符进行简单格式化;利用 `format()` 方法提供更灵活的参数位置控制;通过 `{:.2f}` 格式化浮点数保留两位小数;使用 `&lt;`, `&gt;`, `^` 对齐方式及字符填充;最后,展示了如何用特定格式代码格式化日期和时间。这些技巧能够显著提升代码的可读性和美观性。
32 6
|
6月前
|
索引 Python
Python中的字符串格式化:详解与应用
Python中的字符串格式化:详解与应用
77 0
|
1月前
|
Python
python时间格式化/时间格式转换
python时间格式化/时间格式转换
29 0
|
5月前
|
Python
通过f-string编写简洁高效的Python格式化输出代码
Python 3.6中引入的f-string是Python中最常用的特征之一,它可以让我们编写更干净、更高效和更易于维护的代码,我们今天就由浅入深来详细介绍使用它的一些技巧。
466 4
|
5月前
|
Python
Python语言提供了多种输出格式化的方法,这些方法随着时间的推移和版本的更新而发展
【6月更文挑战第19天】Python格式化方法包括过时的`%`操作符,`str.format()`,推荐的f-string(Python 3.6+)和Template strings。f-string提供最佳的可读性和性能,`str.format()`是通用的,而`%`不推荐使用。模板字符串用于特定场景。对于旧版Python,使用`str.format()`或`%`。
52 4
|
5月前
|
IDE 前端开发 开发工具
怎么在isort Python 代码中的导入语句进行排序和格式化
`isort` 是一个Python工具,用于自动排序和格式化代码中的导入语句,提高代码整洁度和可读性。它支持自动排序、保留空白和注释、自定义排序规则、与多种编辑器集成以及命令行使用。安装`isort`可通过`pip install isort`,使用时可直接在Python代码中导入或通过命令行处理文件。示例展示了如何在代码中使用`isort`进行导入排序,包括基本排序、自定义设置和处理多个文件。`isort`适用于标准库、第三方库和自定义模块的导入排序,还可忽略特定导入,并能与IDE和编辑器插件集成,提升开发效率。
|
5月前
|
IDE 开发工具 开发者
isort——Python 代码中的导入语句进行排序和格式化
isort,全称是 "Import Sorting",是一个 Python 工具,用来对 Python 代码中的导入语句进行排序和格式化。它可以帮助我们按照一定的规则对导入的模块进行排序,使得代码更加整洁,易于阅读和维护。
|
5月前
|
IDE 开发工具 Python
black--一键格式化Python代码
black--一键格式化Python代码
|
5月前
|
Python
Python 字符串格式化的方式有哪些?
这篇文章主要介绍了Python的字符串格式化方法,包括: 1. `%` 操作符,如 `%s`, `%d`, `%f` 用于基本的变量插入和类型转换。 2. `str.format()` 方法,利用 `{}` 占位符和位置或关键字参数。 3. f-strings (Python 3.6+),直接在字符串前加 `f` 并在花括号内嵌入变量。 4. `string.Template` 模块,使用 `$` 符号进行模板替换。 5. `str.format_map()` 方法,接受字典替换占位符。 文章强调f-strings在新代码中的推荐使用,因其简洁和可读性。
下一篇
无影云桌面