python字符串格式化
一、%站位符方法
格式
%[(name)][flags][width].[precision]typecode
参数说明
-
(name):变量命名
-
flag:旗帜位
+号表示左对齐
-号表示右对齐
‘ ’表示在正数左侧添加一个空格而使得和负数对齐
0表示在数字左侧添加一个0进行填充 -
width:占有宽度
-
precision:精度
-
typecode:类型符
-
类型符:
- s:字符串(实际上可以接收任何类型的变量)
- d(i):十进制整型
- f(F):浮点数
- %:显示百分数(默认保留小数点后6位)
- o:八进制数
- x:十六制数
常用格式化
n1 = "i am %s age %d"%("hyj",26)
n2 = "i am %(name)s age %(age)d"%{"name":"hyj","age":26}
n3 = "i am \033[45m%(name)s\033[0m"%{"name":"hyj"}
# \033[45m%s\033[0m包裹的部分可以改变颜色
>>> print("%04d" % 5)
0005
print("%.3f" % 2.3) #小数点后保留三位
2.300
二、format方法
格式
:[fill][align][sign][#][0][width][,][.precision][type]
参数说明
- fill:空白处可以填充的字符
- align:对齐方式
< 内容左对齐
> 内容右对齐
= 内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
^ 内容居中
- sign:有无符号数字
+ 正数加正号,负数加负号
- 正数不变,负数加负号
‘ ’ 正数加空格,负数加负号
- #:对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
- ,:为数字添加分隔符
- width:占有宽度
- precision:精度
- typecode:类型符
常用格式化方法
f1 = "i am {0}, i am {1} years old".format('hyj',26)
#采用位置参数来索引
f2 = "i am {name}, i am {age:d} years old".format(**{'name':'jeck','age':26})
#采用自定义key来缩影,此时**表示将字典的k/v取出 也可以用*来将列表或者元祖中的值按顺序取出来
f3 = "原数:{:d} 二进制:{:b}, 八进制:{:o}, 十六进制x:{:x},十六进制X:{:X}".format(15, 15, 15, 15, 15)
>>> f3
原数:15 二进制:1111, 八进制:17, 十六进制x:f,十六进制X:F
#进制转换
f4 = "--{name:*^10s}-- =={age:<10.2f}==".format(name='Jack',age=26.457)
#将name的宽度设置为10,空余的使用*号不全,并居中显示,age类型设置为浮点型,宽度为10.并左对齐
>>> f4
'--***Jeck***-- ==26.46 =='
>>> f5 = " my name is {0[0]},my hobby is play {0[1]}".format(*[("hyj","game")]) #
>>> f5
' my name is hyj,my hobby is play game'