python 字符串format格式化

本文详细介绍了Python字符串format的使用,包括语法格式、位置变量填充、字符格式化类型、数字精度、显示宽度和对齐方式等。通过实例解析了如何通过format进行字符串格式化操作,包括对一般参数、序列对象、字典对象、类对象和可变参数的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 字符串format格式化

一、概述

二、语法格式:

(一)语法格式
str{}.format(arg)
#{}为二部分(用:分隔):前半部分对arg参数索引,后半部分对前半部分进格式化处理}
{}={index:format_spc}
format_spc=::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]
#只对数字格式的字段:[sign](数字前缀符号+、-、space)、[#](数字类型前缀)、[0](数字宽度0填充)、[grouping_option](数字分段符)、[.precision](数字精度)
#[[fill]align]表示对齐方式及填充符号、[width]表示格式化宽度、[type]表示类型

(二)简单理解:

1、字符串中用占位符{}与fortmat参数有对应关系
2、有格式化符号只对数字型有效

三、例子:

(一)位置变量填充

字符串模板中index相当于取format(args)中对应的参数,而format()参数看一个元组(tuple).理解重点对format()参数的引用

1、format参数是一般参数(变量),按默认顺序索引
>>> print("第{}参数,第{}参数".format("1","2"))1参数,第2参数
2、format参数是一般参数(变量),按索引号索引
>>> print("这里使用第{1}参数,在这使用第{0}参数".format("1","2"))
这里使用第2参数,在这使用第1参数
3、format参数是一般带关键字参数(变量),按关键字索引
>>> print("我叫{name},今年{age}岁".format(age=1500,name="孙悟空"))
我叫孙悟空,今年1500
4、format参数是序列对象,按下标索引
>>> namelist
['唐僧', '孙悟空', '猪八戒', '沙僧']
>>> print("第一名是{name[1]}\n第二名是{name[3]}\n".format(name=namelist))
第一名是孙悟空
第二名是沙僧
#或者
>>> print("第一名是{0[1]}\n第二名是{0[3]}\n".format(namelist))
第一名是孙悟空
第二名是沙僧
5、format参数是字典对象,按字典关键字索引
>>> namedic={"第一名":"唐憎","第二名":"孙悟空"}
>>> print("第一名是{name[第一名]}\n第二名是{name[第二名]}\n".format(name=namedic))
第一名是唐憎
第二名是孙悟空

注意访问字典的key,不用引号的

6、format参数是类对象,按类的成员运算符索引(类变量)

其实以上都类对象。

>>> class four:
	name="孙悟空"
	age=1500	
>>> print("我是{f.name},今年{f.age}岁".format(f=four))
我是孙悟空,今年1500
6、format参数是可变参数
>>> hl=["先生们","女生们"]
>>> mc={"first":"孙悟空","second":"齐天大圣"}
>>> print("{},{}:\n 第一名{second}\n第二名{first}".format(*hl,**mc))
先生们,女生们:
 第一名齐天大圣
第二名孙悟空
>>> print("{1},{0}:\n 第一名{second}\n第二名{first}".format(*hl,**mc))
女生们,先生们:
 第一名齐天大圣
第二名孙悟空
(二)指定字符格式化类型(按类型进行显示)

type:表示显示类型有以下几种:

符号说明
s字符串
c将十进制自动转换成对应的Unicode字符
b将十进制转换成二进制
o将十进制转换成八进制
d将十进制
x X将十进制转换成十六进制
f Fl数字以浮点数(默认小数后6位)
e E转换成科学计数法再格式化
g G根据实行数字选择小数点型或科学记数型
n。 这与 ‘d’ ‘g’相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。
%以%形式显示
>>> print("{:b}".format(123))
1111011
>>> print("{:o}".format(123))
173
>>> print("{:d}".format(123))
123
>>> print("{:x}".format(123))
7b
>>> print("{:e}".format(123))
1.230000e+02
>>> print("{:f}".format(123))
123.000000
>>> print("{:g}".format(123))
123
>>> print("{:%}".format(123))
12300.000000%
>>> print("{:s}".format("123"))
123
>>> print("{:c}".format(97))
a
(三)指定数字精度型(只对浮点数有效)

[.n]表示保留以小数后n位

>>> print("{:.2f}".format(123))
123.00
>>> print("{:.2}".format(123.0))
1.2e+02

(四)指定显示宽度(对所有都有效)

【n】表示显示占n位宽度,如果小于实际宽度,按实际宽度显示。默认数字左对齐,字符串右对齐。

>>> print("{:10}".format(123))
       123
>>> print("{:10}".format("123"))
123       
>>> print("{:10}".format("123.11"))
123.11 
(五)指定对齐方式及填充字符(对所有数字、字符串都有效)
意义
‘<’强制字段在可用空间内左对齐(这是大多数对象的默认值)。
‘>’强制字段在可用空间内右对齐(这是数字的默认值)。
‘=’强制将填充放置在符号(如果有)之后但在数字之前。这用于以“+000000120”形式打印字段。此对齐选项仅对数字类型有效。当’0’紧接在字段宽度之前时,它成为默认值。
‘^’强制字段在可用空间内居中。
>>> print("{:.<10}".format(123.11))
123.11....
>>> print("{:.>10}".format("123"))
.......123
>>> print("{:.>#10}".format(123))
.......123
>>> print("{:.>#15b}".format(123))
......0b1111011
>>> print("{:.=#15b}".format(123))
0b......1111011
(六)其他格式化符(仅对数字有效)
选项意义
sign‘+’表示标志应该用于正数和负数。
‘-’表示标志应仅用于负数(这是默认行为)。
space表示应在正数上使用前导空格,在负数上使用减号
#对于整数类型,当使用二进制、八进制或十六进制输出时,此选项会为输出值添加相应的 ‘0b’, ‘0o’ 或 ‘0x’ 前缀。 对于浮点数、复数和 Decimal 类型,替代形式会使得转换结果总是包含小数点符号,即使其不带小数。 通常只有在带有小数的情况下,此类转换的结果中才会出现小数点符号。 此外,对于 ‘g’ 和 ‘G’ 转换,末尾的零不会从结果中被移除。
0不足宽度数字型用0填充
grouping_option, _对浮点数字用,(_)对分隔
>>> print("{:+b}".format(123))
+1111011
>>> print("{:-b}".format(123))
1111011
>>> print("{: b}".format(123))
 1111011
>>> print("{:+#b}".format(123))
+0b1111011
>>> print("{:010}".format(123))
0000000123
>>> print("{:010,}".format(123))
00,000,123
>>> print("{:010_}".format(123))
00_000_123
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值