本篇目录内容:
📘 一、format() 函数的语法
📘 二、format() 函数基本用法
📘 三、用对齐及填充的方式格式化
📘 四、用format函数实现对齐打印
📘 五、其他内容待本系列篇(二)更新
- 语法:format(value, format_spec='')
- 格式化指定的值,并将其插入字符串的占位符内。
将值转换为由 format_spec 控制的“格式化”表示形式。
- format_spec的解释将取决于值参数的类型;
- 默认format_spec是一个空字符串,通常与调用 str(value) 具有相同的效果。
- 将 to 转换为在搜索值的方法时绕过实例字典的调用。
- 如果方法搜索到达对象并且format_spec为非空,或者如果format_spec或返回值不是字符串,则会引发 TypeError 异常
- 在 3.4 版更改: 如果format_spec不是空字符串,则引发 TypeError.object().__format__(format_spec)
基本语法是通过 {} 和 : 来代替以前的 %
1、位置替换print('{0} {1}'.format('字符串1','字符串2'))格式,
{}调用时,字符串编号顺序从0开始
2、可通过列表索引格式化字符串,{0[1]}中,‘0’是必须的
3、可以使用大括号 {} 来转义大括号,{{}}
4、数字和关键字段可以混合使用来传递参数,
5、关键字参数必须位于位置参数之后。
6、省略字段名{}不能和数字形式的字段名同时使用
7、format 函数可以接受不限个参数,位置可以不按顺序。
8、占位符使用大括号 {} 定义。
9、返 回 值,返回一个格式化的字符串
- 主要格式:print('{ } { }'.format('字符串1','字符串2'))
- foramt会把参数按位置顺序来填充到字符串中(按照顺序自动分配),第一个参数是0,然后1 ……
- 也可以不输入数字,则会按照顺序自动分配,而且一个参数可以多次插入
- 一个参数可以多次插入
- {{}}仅代表{},不占用字符串格式化位置顺序
位置替换,按照先后顺序对format内容进行匹配替换 | |
代 码 | #不指定位置,按默认顺序 print('{} {}'.format('Adversity','Awake')) |
运行结果 | Adversity Awake |
代 码 | #empty 占位符 mtext1 = "我的名字叫{},我已经{}岁了~".format("逆境清醒",100) print(mtext1) |
运行结果 | 我的名字叫逆境清醒,我已经100岁了~ |
代 码 | #不指定位置,按默认顺序 print('{} {} {} '.format('逆境清醒:','不能如愿而行,', '也须尽力而为。')) |
运行结果 | 逆境清醒:不能如愿而行,也须尽力而为。 |
代 码 | #不指定位置,按默认顺序,{{}}仅代表{},不占用字符串格式化位置顺序 print('{} {{}} {} {{}} {}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。')) |
运行结果 | 逆境清醒: {} 不能如愿而行, {} 也须尽力而为。 |
代 码 | # {} 和参数的个数必须匹配,否则会报错。 print('{}{}{}{}{}{}{}{}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。')) |
运行结果 | Traceback (most recent call last): Exited with error status 1 回溯(最近一次调用): 已退出,错误状态为 1 |
代 码 | #当{}号叠加时,例如{{{{}}}} print(' {{{{}}}} {} {{{{}}}} {}{}'.format('逆境清醒:','不能如愿而行,', '也须尽力而为。')) |
运行结果 | {{}} 逆境清醒: {{}} 不能如愿而行,也须尽力而为。 |
- 主要格式:print('{0} {1}'.format('字符串1','字符串2'))
- 按索引编号来匹配替换{索引}的值
按照索引对format内容进行匹配替换 | |
代 码 | #按索引编号来匹配 mtext1 = "我的名字是{0},我已经{1}岁了~".format("逆境清醒",100) print(mtext1) |
运行结果 | 我的名字是逆境清醒,我已经100岁了~ |
代 码 | # 设置指定位置 print('{0} {1}'.format('逆境','清醒')) |
运行结果 | 逆境清醒 |
代 码 | # 设置指定位置 print('{1} {0}'.format('逆境','清醒')) |
运行结果 | 清醒逆境 |
代 码 | # 设置指定位置 print('{1} {0} {1}'.format('逆境','清醒')) |
运行结果 | 清醒逆境清醒 |
代 码 | # 设置指定位置 print('{1}{3}:{0},{2}!{3}!'.format('不能如愿而行', '逆境','也须尽力而为','清醒')) |
运行结果 | 逆境清醒:不能如愿而行,也须尽力而为!清醒! |
代 码 | print("{0}{2}{1}".format("菠萝","雪梨","苹果")) |
运行结果 | 菠萝苹果雪梨 |
代 码 | |
运行结果 | |
- 主要格式:print('{关键字索引1} {关键字索引2}'.format(关键字索引1='关键字1',关键字索引2='关键字2'))
按照关键字索引对format内容进行匹配替换 | |
代 码 | print('ID:{id},Name:{name}'.format(id='No008',name='逆境清醒')) |
运行结果 | ID:No008,Name:逆境清醒 |
代 码 | print("博客名:{name}, 地址:{url}".format(name="逆境清醒", url="https://blog.csdn.net/weixin_69553582")) |
运行结果 | 博客名:逆境清醒, 地址:https://blog.csdn.net/weixin_69553582 |
#关键字可以随便放置 | |
代 码 | print("我今年{age}岁,座右铭{motto}".format(age="100",motto="要有勇气做真实的自己")) print("我今年{age}岁,座右铭{motto}".format(motto="要有勇气做真实的自己",age="100")) |
运行结果 | 我今年100岁,座右铭要有勇气做真实的自己 我今年100岁,座右铭要有勇气做真实的自己 |
代 码 | print("ID:{id},水果名:{Cname}".format(id="No01",Cname="菠萝")) |
运行结果 | ID:No01,水果名:菠萝 |
主要格式:
- 列表名=['列表值1','列表值2','列表值3'...]
- print('{List[列表索引1]},{List[列表索引2]}'.format(List = 列表名))
- 在format格式化时,可使用* 或者 ** 进行对list拆分。
通过列表索引格式化字符串 | |
代 码 | list1=['No008','逆境清醒'] print('ID:{List[0]},Name:{List[1]}'.format(List = list1)) |
运行结果 | ID:No008,Name:逆境清醒 |
代 码 | #注意正确使用索引值,否则会得出奇怪的答案 list1=['No008','逆境清醒'] print('ID:{List[1]},Name:{List[0]}'.format(List = list1)) |
运行结果 | ID:逆境清醒,Name:No008 |
代 码 | list1=['No008','逆境清醒'] print('ID:{0[0]},Name:{0[1]}'.format(list1)) |
运行结果 | ID:No008,Name:逆境清醒 |
代 码 | list1=['No008','逆境清醒'] print('ID:{0[1]},Name:{0[0]}'.format(list1)) |
运行结果 | ID:逆境清醒,Name:No008 |
代 码 | list1 = ['逆境清醒', 'https://blog.csdn.net/weixin_69553582'] print("博客名:{0[0]}, 地址:{0[1]}".format(list1)) # 0[1]中,‘0’是必须的 |
运行结果 | 博客名:逆境清醒, 地址:https://blog.csdn.net/weixin_69553582 |
代 码 | info1 = ("草莓", "红色") info2 = ('芒果', '黄色') print('水果名:{0[0]}, 颜色:{0[1]}'.format(info1, info2)) print('水果名:{1[0]}, 颜色:{1[1]}'.format(info1, info2)) |
运行结果 | 水果名:草莓, 颜色:红色 水果名:芒果, 颜色:黄色 |
代 码 | #注意正确使用索引值,否则会得出奇怪的答案 info1 = ("草莓", "红色") |
运行结果 | 水果名:红色, 颜色:草莓 水果名:黄色, 颜色:芒果 |
代 码 | #注意正确使用索引值,否则会得出奇怪的答案 info1 = ("草莓", "红色") |
运行结果 | 水果名:芒果, 颜色:红色 水果名:草莓, 颜色:黄色 |
代 码 | #在format格式化时,可使用* 或者 ** 进行对list拆分 foods = ['苹果', '雪梨', '草莓', '菠萝', '香蕉'] s = '小白兔喜欢吃 {2} and {0} and {4}'.format(*foods) print(s) |
运行结果 | 小白兔喜欢吃 草莓 and 苹果 and 香蕉 |
主要格式:
- 字典名1={'字典索引1':'字典索引1的值','字典索引2':'字典索引2的值',...}
- print('{字典索引},{字典索引值}'.format(字典名1))
- 在format格式化时,可使用 ** 进行对字典拆分
通过字典设置格式化字符串 | |
dict1={'id':'No008','name':'逆境清醒'} 错误使用方式: print('ID:{Dict[0]},Name:{Dict[1]}'.format(dict1)) 会出错:Traceback (most recent call last): | |
代 码 | dict1={'id':'No008','name':'逆境清醒'} print('ID:{0[id]},Name:{0[name]}'.format(dict1)) |
运行结果 | ID:No008,Name:逆境清醒 |
代 码 | #在format格式化时,可使用 ** 进行对字典拆分 print('ID:{id},Name:{name}'.format(**dict1)) |
运行结果 | ID:No008,Name:逆境清醒 |
代 码 | site = {"name": "逆境清醒", "url": "https://blog.csdn.net/weixin_69553582"} print("博客名:{name}, 地址:{url}".format(**site)) |
运行结果 | 博客名:逆境清醒, 地址:https://blog.csdn.net/weixin_69553582 |
代 码 | info1 = {'名字': '逆境清醒', '性别':'女'} info2 = {'名字': '蒲公英', '性别':'女'} print('名字:{0[名字]}, 性别:{0[性别]}; 名字:{1[名字]}, 性别:{1[性别]}'.format(info1, info2)) |
运行结果 | 名字:逆境清醒, 性别:女; 名字:蒲公英, 性别:女 |
同时使用元组和字典传参 | |
代 码 | name1=["紫悦","魔法与友谊"] name2={"Ponyname":"云宝","skill":"飞行"} print("我是{0},我的绝招是{1}".format(*name1,**name2)) print("我是{0},我的绝招是{skill}".format(*name1,**name2)) print("我是{Ponyname},我的绝招是{skill}".format(*name1,**name2)) print("我是{Ponyname},我的绝招是{1}".format(*name1,**name2)) |
运行结果 | 我是紫悦,我的绝招是魔法与友谊 我是紫悦,我的绝招是飞行 我是云宝,我的绝招是飞行 我是云宝,我的绝招是魔法与友谊 |
主要格式:
- 类定义
class 类名字():
类内定义 = '类值'
....- print("{Value.类内定义}".format(Value = 类名字))
通过类设置格式化字符串 | |
代 码 | class value1(): id = 'No008' name = '逆境清醒' print("ID:{Value.id},Name{Value.name}".format(Value = value1)) |
运行结果 | ID:No008,Name逆境清醒 |
代 码 | class testValue(object): def __init__(self, value): self.value = value ab = testValue(8) print("ab=",ab) print("testValue(8)=",testValue(8)) print("ID:{Value}".format(Value = testValue)) print("ID:{Value.value}".format(Value = ab)) |
运行结果 | ab= <__main__.testValue object at 0x7f342b9ab670> testValue(8)= <__main__.testValue object at 0x7f342b9bcfa0> ID: ID:8 |
代 码 | class Names(): name1='陌生但有缘的朋友' name2='逆境清醒' print('你好! {names.name1},我是{names.name2}'.format(names=Names)) |
运行结果 | 你好! 陌生但有缘的朋友,我是逆境清醒 |
魔法函数__format__
- 触 发:使用字符串.format(对象)时候触发
- 参 数:一个self接收对象,一个参数接收format的{}中的格式,例如:>8
- 返回值:必须是字符串
- 作 用:设置对象可以作为format的参数,并且自定义对象格式化的规则
- 注 意:无
通过魔法参数设置格式化字符串 | |
代 码 | class magiccs: magic = magiccs() |
运行结果 | 这个参数类型是: |
代 码 | class magiccs: magic = magiccs() |
运行结果 | 这个参数类型是: |
代 码 | class Date: mDate = Date(2023, 3, 31) |
运行结果 | 日期格式(选项为 1 ): 2023 - 3 - 31 日期格式(选项为 2 ): 2023 : 3 : 31 日期格式(选项为 3 ): 2023 / 3 / 31 日期格式(选项为空, 则选择默认): 2023 - 3 - 31 日期格式(选项不存在, 则选择默认): 2023 - 3 - 31 |
代 码 | |
运行结果 |
通过内嵌替换设置格式化字符串 | |
代 码 | print('Hello {0:{1}>{2}} '.format('逆境清醒','☆',15)) |
运行结果 | Hello ☆☆☆☆☆☆☆☆☆☆☆逆境清醒 |
代 码 | |
运行结果 | |
混搭使用
- 可以通过索引,参数名来混搭进行匹配。
- 注意,命名参数必须写道最后。负责会编译报错!
- 不可以索引和默认格式化混合使用。
- 支持对参数部分引用,可以通过索引对参数的部分进行取值
其他混搭使用 | |
代 码 | fh = [' @ ','。','!'] |
运行结果 | ID:No008 @ Name:逆境清醒。! |
代 码 | #命名参数必须写在最后。否则会编译报错! |
运行结果 | 努力不一定成功,但放弃一定会失败,说得对吗:Y |
代 码 | #命名参数必须写在最后。否则会编译报错! s1 = "{},{},说得对吗:{说得对吗}".format('努力不一定成功',说得对吗="Y", '但放弃一定会失败') |
运行结果 | SyntaxError: positional argument follows keyword argument Exited with error status 1 语法错误:位置参数跟在关键字参数后面 已退出,错误状态为 1 |
代 码 | #不可以索引和默认格式化混合使用 print(s) |
运行结果 | ValueError: cannot switch from automatic field numbering to manual field specification Exited with error status 1 值错误:无法从自动字段编号切换到手动字段规范 已退出,错误状态为 1 |
代 码 | #不可以索引和默认格式化混合使用 print(s) |
运行结果 | ValueError: cannot switch from automatic field numbering to manual field specification Exited with error status 1 值错误:无法从自动字段编号切换到手动字段规范 已退出,错误状态为 1 |
代 码 | #可以通过索引对参数的部分进行取值 s = "这是一个{s}, {s[0]} 是颜色".format(s="红苹果") print(s) |
运行结果 | 这是一个红苹果, 红 是颜色 |
- :< 左对齐填充
<是左对齐,后面带宽度,
: 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
-表示左对齐
%-30s: 左对齐,占位符30位
左对齐及填充格式化字符串 | |
代 码 | # 15表示占15个字符,-表示左对齐 print('%-15s'%'逆境清醒',end='@') |
运行结果 | 逆境清醒 @ |
代 码 | print('{:<10}'.format('逆境清醒'),end='@') |
运行结果 | 逆境清醒 @ |
代 码 | # <表示左对齐, ☆表示用☆号进行填充, 10表示共占10个字符 print('{:☆<10}'.format('逆境清醒')) |
运行结果 | 逆境清醒☆☆☆☆☆☆ |
代 码 | #左对齐,取30位,不够的话以空格补位 print("%-30s" % "Adversity Awake",end='@') |
运行结果 | Adversity Awake @ |
代 码 | #不设置,默认左对齐 print("{:20s} & {:20s}".format("珍惜每一次相识", "珍惜每一分温暖")) |
运行结果 | 珍惜每一次相识 & 珍惜每一分温暖 |
代 码 | # <表示左对齐,10表示共占10个字符 products=[["iphone",6888],["MacPro",14800],["coffee",32],["abc",2499],["Book",60],["Nike",699],["MacPro",45600],["coffee",432],["abc",244499],["Book",6230],["Nike",61299],["MacPro",14800],["coffee",32],["abc",2499],["Book",60],["Nike",699]] print("-"*10+"商品列表"+"-"*10) i=0 for product in products: print('{:<6}\t{:<10}\t{:<10}'.format(str(i), product[0], str(product[1]))) i = i+1 |
运行结果 | |
编外话:有时需要对齐输出,还可以使用print()+\t 来实现:
代 码 | print("学生号\t\t姓名\t\t\t\t\t科目\t\t分数") print("100000101\t阿凡达\t\t\t\t\t语文\t\t80") print("100000102\t卡梅隆卡梅隆\t\t\t语文\t\t85") print("100000103\t莫妮卡·贝鲁卡梅隆\t\t语文\t\t85") |
运行结果 | #用多个制表符,对齐完好 |
代 码 | print("%-10s\t %-30s\t %-10s\t %-10s"%("学生号","姓名","科目","分数")) print("%-10s\t %-32s\t %-10s\t %-12s"%("100000101","阿凡达","语文","80")) print("%-10s\t %-30s\t %-10s\t %-12s"%("100000102","卡梅隆卡梅隆","语文","82")) print("%-10s\t %-26s\t %-10s\t %-12s"%("100000103","莫妮卡·贝鲁卡梅隆","语文","85")) |
运行结果 | #对齐完好 |
更多print()函数资料详见:
Python中Print()函数的用法___实例详解(全,例多)https://blog.csdn.net/weixin_69553582/article/details/125403845
:>右对齐
- >是右对齐,后面带宽度,
- : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
- %30s: 右对齐,占位符30位
右对齐及填充格式化字符串 | |
代 码 | print('@''%15s'%'逆境清醒') |
运行结果 | @ 逆境清醒 |
代 码 | print('@''{:>10}'.format('逆境清醒')) |
运行结果 | @ 逆境清醒 |
代 码 | print('@','{:☆>10}'.format('逆境清醒')) |
运行结果 | @ ☆☆☆☆☆☆逆境清醒 |
代 码 | # 右对齐,取30位,不够的话以空格补位 print("@""%30s" % "Adversity Awake") |
运行结果 | @ Adversity Awake |
代 码 | print("{:<20s} & {:>20s}".format("珍惜每一次相识", "珍惜每一分温暖")) |
运行结果 | 珍惜每一次相识 & 珍惜每一分温暖 |
代 码 | print("{:>20s} & {:<20s}".format("珍惜每一次相识", "珍惜每一分温暖")) |
运行结果 | 珍惜每一次相识 & 珍惜每一分温暖 |
代 码 | print("{} is {:>10.2f}".format(1.8321, 1.8321)) |
运行结果 | 1.8321 is 1.83 |
:^ 居中对齐
- ^是居中对齐,后面带宽度,
- : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
居中对齐及填充格式化字符串 | |
代 码 | print('@''{:^10}'.format('逆境清醒'),end='@') |
运行结果 | @ 逆境清醒 @ |
代 码 | print('@''{:☆^10}'.format('逆境清醒'),end='@') |
运行结果 | @☆☆☆逆境清醒☆☆☆@ |
代 码 | print("{:^20s} & {:^20s}".format("珍惜每一次相识", "珍惜每一分温暖")) |
运行结果 | 珍惜每一次相识 & 珍惜每一分温暖 |
代 码 | print("{:☆^30s}".format(" 逆境清醒 ") ) # 居中对齐 |
运行结果 | ☆☆☆☆☆☆☆☆☆☆☆☆逆境清醒☆☆☆☆☆☆☆☆☆☆☆☆ |
- ljust()函数:左侧对齐
- rjust()函数:右侧对齐
- center()函数:字符串居中对齐
- zfill()函数:右侧对齐, 左侧补0
- 当len(str1)>width时,输全部字符串
调用函数对齐及填充格式化字符串 | |
代 码 | # 字符串左侧对齐, 右侧补❄: str1 = "逆境清醒" print(str1.ljust(width, '❄')) |
运行结果 | 逆境清醒❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄ |
代 码 | # 字符串左侧对齐, 右侧补❄: print("{}".format(str1.ljust(width, '❄')) ) |
运行结果 | 逆境清醒❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄ |
代 码 | # 字符串右侧对齐, 左侧补❄: str1 = "逆境清醒" print(str1.rjust(width, '❄')) print("{}".format(str1.rjust(width, '❄')) ) |
运行结果 | ❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄逆境清醒 |
代 码 | # center字符串居中对齐, 两侧侧补❄ str1 = "逆境清醒" print(str1.center(width, '❄')) print("{}".format(str1.center(width, '❄')) ) |
运行结果 | ❄❄❄❄❄❄❄❄逆境清醒❄❄❄❄❄❄❄❄ |
代 码 | # 字符串右侧对齐, 左侧补0 str1 = "逆境清醒" |
运行结果 | 0000000000000000逆境清醒 |
代码:
def show(n): numlast = "🌸"*(2*n-1) width = len(numlast) for i in range(1,2*n,2): print("{:<{}}".format("🌸"*i,width)) show(8)
输出结果:
代码:
def show(n): numlast = "0"*(2*n-1) width = len(numlast) width=20 for i in range(1,2*n,2): print("{:>{}}".format("0"*i,width)) show(8)
输出结果:
代码:
def show2(n): numlast = "❄"*(2*n-1) width = len(numlast) for i in range(1,2*n,2): print("{:^{}}".format("❄"*i,width)) show2(8)
输出结果:
稍后更新
《 python Format()函数的用法___实例详解(二)(全,例多)》
推荐阅读:
33 | python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印 | |
32 | Background 全属性实例图解(10种全)(一) | |
31 | Element Plus 实例详解(一)___安装设置 | |
30 | | Vue3安装配置、开发环境搭建(组件安装卸载)(图文详细) |
29 | | SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例) |
28 | | 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决 |
27 | | 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(1) |
26 | | 2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特 |
25 | | 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载) |
24 | | HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码) |
23 | | 草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码 |
22 | | 【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码) |
21 | | python爱心源代码集锦(18款) |
20 | | 巴斯光年python turtle绘图__附源代码 |
19 | | Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) |
18 | | 草莓熊python turtle绘图代码(玫瑰花版)附源代码 |
17 | | 立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦 |
16 | | 皮卡丘python turtle海龟绘图(电力球版)附源代码 |
15 | | 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向) |
14 | | 草莓熊python turtle绘图(风车版)附源代码 |
13 | | 用代码过中秋,python海龟月饼你要不要尝一口? |
12 | | 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 |
11 | | 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心) |
10 | | Python函数方法实例详解全集(更新中...) |
9 | | matplotlib 自带绘图样式效果展示速查(28种,全) |
8 | | 手机屏幕坏了____怎么把里面的资料导出(18种方法) |
7 | | 2023年3月TIOBE 指数头条:编程语言 Go 进入 TIOBE 指数前 10 名,多家权威机构____编程语言排行榜__薪酬状 |
6 | | Python中Print()函数的用法___实例详解(全,例多) |
5 | | 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名) |
4 | | Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) |
3 | | Tomcat 启动闪退问题解决集(八大类详细) |
2 | | Tomcat端口配置(详细) |
1 | | tomcat11、tomcat10 安装配置(Windows环境)(详细图文) |