网站设计大概收费范围,网站建设信息科技公司,中国东盟建设集团有限公司网站,信息发布平台推广文章目录 一、format语法二、format格式化的用法2.1、按照先后顺序替换{}2.2、按照索引进行匹配替换{0}2.3、按关键字索引进行匹配替换2.4、通过列表索引格式化字符串2.5、使用元组2.6、通过字典设置格式化字符串2.7、混合使用 三、字符串填充与对齐3.1、左对齐及填充3.2、右对… 文章目录 一、format语法二、format格式化的用法2.1、按照先后顺序替换{}2.2、按照索引进行匹配替换{0}2.3、按关键字索引进行匹配替换2.4、通过列表索引格式化字符串2.5、使用元组2.6、通过字典设置格式化字符串2.7、混合使用 三、字符串填充与对齐3.1、左对齐及填充3.2、右对齐及填充3.3、居中对齐及填充 四、格式化4.1、格式化数字4.2、格式化日期和时间 五、format() 方法综合应用 format函数是Python中强大的字符串格式化方法,它允许程序员通过大括号{}来为字符串中的插入点占位,并通过传入参数进行替换,{0}、{1}分别代表不同的参数
以下内容基于Python3.13进行讲解。
一、format语法
官网地址https://docs.python.org/zh-cn/3/library/functions.html#format
语法一format()函数
format(value, format_spec)将 value 转换为“格式化后”的形式格式由 format_spec 进行控制。format_spec 的解释方式取决于 value 参数的类型
语法二str.format()
str.format(*args, **kwargs) 常见形式为 .format()如print(我是{}.format(小明)){}一般被称为槽
format_spec常用格式
{[index][:[fill]align][sign][#][width][grouping_option][.precision][type]}{......}{......}.format()格式中[]内的参数都是可选参数每个{}都表示是一个待替换的字符串。format_spec :: [[fill]align][sign][z][#][0][width][grouping_option][. precision][type]
fill :: any character
align :: | | | ^
sign :: | - |
width :: digit
grouping_option :: _ | ,
precision :: digit
type :: b | c | d | e | E | f | F | g | G | n | o | s | x | X | %index指定冒号后面出现的参数在format()中的索引值如果没有则以format()中的默认顺序自动分配。
fill指定空白处的填充符默认是空格可以是任意单个字符。
align指定数字的对齐方式。
align含义左对齐对于大部分对象时为默认右对齐对于数字时为默认数据右对齐同时将符号放置在填充内容的最左侧该选项只对数字类型有效^数据居中此选项需和 width 参数一起使用
请注意除非定义了最小字段宽度否则字段宽度将始终与填充它的数据大小相同因此在这种情况下对齐选项没有意义。
sign指定有无符号数 。
sign含义正数前面添加 ‘ ’ 负数前面加 ‘ - ’ 例如 3 , -1 。-表示正负号仅用于负数这是默认行为。正数前面不添加 ‘ ’ 负数前面加 ‘ - ’。例如 3 , -1。space正数前面添加 ‘ 空格 ’ 负数前面加 ‘ - ’#对于二进制数、八进制数和十六进制数使用此参数各进制数前会分别显示 0b、0o、0x前缀反之则不显示前缀
width指定输出数据时所占的宽度。
grouping_option :千分位分隔符一般为_ 或 “,” 。
.precision如果后面存在type参数则指的是保留小数的位数如果type参数不存在则是指有效数字的位数。
type指定输出数据的具体类型。
type含义s对字符串类型格式化这是字符串的默认类型可以省略。%显示百分比默认显示小数点后六位将数字乘以 100 后面带一个百分号。d十进制整数c将十进制整数自动转化成对应的Unicode字符b将十进制数自动转化成二进制数并格式化输出o将十进制数自动转化成八进制数并格式化输出x十六进制数a 到 f 小写X十六进制数A 到 F 大写。 在指定 ‘#’ 的情况下前缀 ‘0x’ 也将被转为大写形式 ‘0X’。e转化成科学计数法并格式化输出E科学计数法。 与 ‘e’ 相似不同之处在于它使用大写字母 ‘E’ 作为分隔字符。f转化为浮点数对 float 采用小数点之后 6 位精度而对 Decimal 则使用大到足够显示所有系数位的精度。F定点表示。 与 ‘f’ 相似但会将 nan 转为 NAN 并将 inf 转为 INF。g、G自适应转化为e或fE或F并格式化输出
简单示例
print({0}{1}.format(Hello, World!)) #输出:Hello World!
print({0:20}.format(Python))#输出:Python
print({0:20}.format(Python))#输出:Python
print({0:^20}.format(Python))#输出:Python
#还可以不需要槽样式直接将槽样式写在format函数的参数里
print(format(Hello),format(World)) #输出:Hello World!
print(format(Python,20))#输出:Python
print(format(Python,20))#输出:Python
print(format(Python,^20))#输出:Python二、format格式化的用法
2.1、按照先后顺序替换{}
格式如下
{} {}.format(values1, values2)说明format 会把参数按位置顺序来填充到字符串中按照顺序自动分配而且一个参数可以多次插入。{{}} 仅代表{}不占用字符串格式化位置顺序。
示例
# {} 和参数的个数必须匹配否则会报错。
name张三
age19
s我的名字是:{},年龄是{}
print(s.format(name,age) )输出为
我的名字是:张三,年龄是192.2、按照索引进行匹配替换{0}
格式如下
{0} {1}.format(value1, value2)说明按索引编号来匹配替换 {索引} 的值。
{0}{1}代表的占位符数字占位符要注意顺序。下标从0开始。
name张三
age19
s我的名字是:{0},年龄是{1}
print(s.format(name,age) )输出为
我的名字是:张三,年龄是19索引下标可多次使用
print(我是{0}我喜欢{1}你喜欢{1}吗.format(小明,打羽毛球))输出我是小明我喜欢打羽毛球你喜欢打羽毛球吗先后顺序与索引下标不能混合一起使用下面的用法将报错
print(我是{0}我喜欢{1}你喜欢{}吗.format(小明,打羽毛球,乒乓球))输出
ValueError: cannot switch from manual field specification to automatic field numbering索引下标不能越界即不能超过format给出的值数量注意下标是0开始下面用法将报错
print(我是{2}.format(小明,打羽毛球))输出IndexError: tuple index out of range2.3、按关键字索引进行匹配替换
格式如下
{关键字索引1} {关键字索引2}.format(关键字索引1 value1, 关键字索引2 value2)s我的名字是:{name},年龄是{age}
print(s.format(age19,name张三) )year 2024
month 11
s 现在是{year1}年{month1}月
print(s.format(year1year,month1month) )输出为
我的名字是:张三,年龄是19
现在是2024年11月2.4、通过列表索引格式化字符串
格式如下
列表名[列表值1,列表值2,列表值3...]
{List[列表索引1]},{List[列表索引2]}.format(List 列表名)说明在format格式化时可使用 * 对list拆分示例
list1 [张三,22]
list2 [2002,10,22]
list3 [Tom,Jerry,Rose,Black]
list4 [25,22,20,24]
print(我叫{list[0]}今年{list[1]}岁了。.format(listlist1))
print(我叫{0[0]}今年{0[1]}岁了。.format(list1))
print(李明的生日{list[0]}-{list[1]}-{list[2]}.format(listlist2))
print({0[0]}的年龄为{1[1]}{0[1]}的年龄为{1[2]}{0[2]}的年龄为{1[0]}{0[3]}的年龄为{1[3]}。.format(list3,list4))# 使用 *与** 对list进行拆分
print(李明的生日{1}-{2}-{0}.format(*list2))运行结果为我叫张三今年22岁了。
我叫张三今年22岁了。
李明的生日2002-10-22
Tom的年龄为22Jerry的年龄为20Rose的年龄为25Black的年龄为24。
李明的生日10-22-2002关于*list拆分列表的用法参考python中的*与**用法详解
2.5、使用元组
元组与list用法一致参考上面写法。
test (小明,珠海市,天蝎座,小哥哥)
print(我是{0[0]}来自{0[1]}的{0[2]}一枚{0[3]}.format(test))
print(我是{0}来自{1}的{2}一枚{3}.format(*test))
print(我是{}来自{}的{}一枚{}.format(*test))#输出
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py
我是小明来自珠海市的天蝎座一枚小哥哥
我是小明来自珠海市的天蝎座一枚小哥哥
我是小明来自珠海市的天蝎座一枚小哥哥2.6、通过字典设置格式化字符串
格式如下
字典名1{字典索引1:字典索引1的值, 字典索引2:字典索引2的值, ...}
{字典索引},{字典索引值}.format(字典名1) 说明在format格式化时可使用 ** 对字典拆分dict1 {name:张三,age:21}
dict2 {year:2002,month:10,day:22}
print(我叫{0[name]}今年{0[age]}岁了。.format(dict1))
print(我叫{0}今年{1}岁了。.format(*dict1))
print(李明的生日{0[year]}-{0[month]}-{0[day]}.format(dict2))
print(李明的生日{0[month]}-{0[day]}-{0[year]}.format(dict2))
print(我叫{name}今年{age}岁了.format(**dict1))
# python2.7中不支持多个**入参python3支持
print(我叫{name}今年{age}岁了。生日{year}-{month}-{day}.format(**dict1,**dict2))运行结果为我叫张三今年21岁了。
我叫age今年name岁了。
李明的生日2002-10-22
李明的生日10-22-2002
我叫张三今年21岁了
我叫张三今年21岁了。生日2002-10-22关于**dict的用法参考python中的*与**用法详解
2.7、混合使用
1可以通过索引参数名来混合匹配。 2注意命名参数必须放在最后。否则编译时出现报错 3索引和默认格式化不可以混合使用。 4支持对参数部分引用可以通过索引对参数的部分进行取值。
示例
list1 [张三,21]
dict1 {year:2002,month:10,day:22}
print(我叫{}生日为{year}-{month}-{day}今年{}岁了。.format(*list1,**dict1))
print(我叫{}今年{age}岁了。.format(李四,age25))
# print(我叫{}今年{age}岁了。.format(age25,李四)) #此代码错误命名参数必须放在最后
print(我叫{}今年{1}岁了。.format(李四,25)) #此代码错误索引和默认格式化不可以混合使用程序运行结果为
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test.py
我叫张三生日为2002-10-22今年21岁了。
我叫李四今年25岁了。
Traceback (most recent call last):File D:\WorkSpace-Python\Test\test.py, line 6, in moduleprint(我叫{}今年{1}岁了。.format(李四,25))
ValueError: cannot switch from automatic field numbering to manual field specification三、字符串填充与对齐
format支持左对齐、右对齐、居中对齐。
如果你希望将变量打印在特定位置可以使用对齐方式
更多对齐与填充的方法参考《Python字符串对齐的几种方法、Python填充与对齐、Python中英文对齐》
3.1、左对齐及填充
格式如下
: # 左对齐填充# 左对齐后面带宽度
: # 后面带填充的字符只能是一个字符不指定则默认是用空格填充示例
print({:10}!.format(Python)) # 默认填充空格
print({:010}!.format(Python)) # 用0填充
print({:10}!.format(中华人民万岁)) # 默认填充空格运行结果D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test.py
Python !
Python0000!
中华人民万岁 !注意python2与python3中对于中文字符串的填充是不一致的。
#python2
print({:10}!.format(hello)) # 右边补充5个空格使长度为10
print({:10}!.format(全世界)) # 右边补充一个空格因为len(全世界)发现长度为9
hello !
全世界 !# python3
print({:10}!.format(hello)) # 右边补充5个空格使长度为10
print({:10}!.format(全世界)) # 右边补充7个空格使长度为10
hello !
全世界 !在Python 2和Python 3中len()函数的主要区别在于它们对字符串的处理方式不同。 在Python 2中len()函数返回的是字节长度。这意味着如果字符串中包含非ASCII字符如中文、日文等len()返回的将是字节数而不是字符数。例如对于包含中文的字符串len()返回的将是字节长度而不是字符数。而在Python 3中len()函数直接返回字符数量。这是因为Python 3默认使用UTF-8编码而UTF-8编码支持多字节字符因此len()函数返回的是字符数而不是字节数。这意味着在处理包含非ASCII字符的字符串时Python 3的len()函数能够正确地返回字符数 3.2、右对齐及填充
格式如下
: # 右对齐# 右对齐后面带宽度
: # 后面带填充的字符只能是一个字符不指定则默认是用空格填充示例如下
print({:10}!.format(Python)) # 默认填充空格
print({:010}!.format(Python)) # 用0填充
print({:10}!.format(中华人民万岁)) # 默认填充空格运行结果D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test.py Python!
0000Python!中华人民万岁!3.3、居中对齐及填充
格式如下
:^ # 居中对齐
^ # 居中对齐后面带宽度
: # 后面带填充的字符只能是一个字符不指定则默认是用空格填充示例如下
print({:^10}!.format(Python)) # 默认填充空格
print({:0^10}!.format(Python)) # 用0填充
print({:^10}!.format(中华人民万岁)) # 默认填充空格运行结果D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test.py Python !
00Python00!中华人民万岁 !四、格式化
4.1、格式化数字
更多详细内容参考另一篇文章python format格式化数字 可以实现百分比、千分位、进制转换、字符填充与对齐等等。
4.2、格式化日期和时间
format() 函数在处理日期和时间时也非常有用可以将日期和时间对象格式化为特定的字符串表示。
from datetime import datetime# 格式化当前日期和时间
now datetime.now()
formatted_datetime {:%Y-%m-%d %H:%M:%S}.format(now)
print(Formatted datetime:, formatted_datetime)日期和时间符号参考python中时间日期格式化符号
五、format() 方法综合应用
1打印左对齐图案
代码如下
for i in range(1, 11):print({:{}}.format(* * i, 10))程序运行结果为
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py
*
**
***
****
*****
******
*******
********
*********
**********2打印右对齐图案
代码如下
for i in range(1, 11):print({:{}}.format(* * i, 10))程序运行结果为
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py*********************************************
**********3打印居中对齐图案
代码如下
for i in range(1, 21, 2):print({:^{}}.format(* * i, 20))程序运行结果为
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py* *** ***** ******* ********* *********** ************* *************** *****************
******************* 参考或推荐文章 https://blog.csdn.net/weixin_44377973/article/details/132300478 数字格式化python format格式化数字 https://zhuanlan.zhihu.com/p/632687543