pythonformat⽅法的格式控制填充_⼀⽂秒懂!Python字符串
格式化之forma。。。
format是字符串内嵌的⼀个⽅法,⽤于格式化字符串。以⼤括号{}来标明被替换的字符串,⼀定程度上与%⽬的⼀致。但在某些⽅⾯更加的⽅便
1、基本⽤法
1、按照{}的顺序依次匹配括号中的值
s = "{} is a {}".format('Tom', 'Boy')
print(s) # Tom is a Boy
s1 = "{} is a {}".format('Tom')
# 抛出异常, Replacement index 1 out of range for positional args tuple
print(s1)
2、通过索引的⽅式去匹配参数
这⾥需要注意的是,索引从0开始计算。
s = "{0} is a {1}".format('Tom', 'Boy')
print(s) # Tom is a Boy
s1 = "{1} is a {2}".format('Tom', 'Lily', 'Girl')
print(s1) # Lily is a Girl
字符串中索引的顺序可以打乱,并不影响匹配。
s = "{1} is a {0}".format('Boy', 'Tom', )
print(s) # Tom is a Boy
3、通过参数名来匹配参数
s = "{name} is a {sex}".format(name='Tom', sex='Boy')
print(s) # Tom is a Boy
同理,如果参数已经确定,可以直接利⽤{}进⾏格式化引⽤。
name = 'Tom'
sex = 'Girl'
# 以f开头表⽰在字符串中⽀持⼤括号内的python表达式
s = f"{name} is a {sex}"
print(s) # Tom is a Boy
4、混搭使⽤
可以通过索引,参数名来混搭进⾏匹配。
s = "My name is {}, i am {age} year old, She name is {}".format('Liming', 'Lily', age=10)
print(s) # My name is Liming, i am 10 year old, She name is Lily
需要注意的是,命名参数必须写道最后。负责会编译报错!
s = "My name is {}, i am {age} year old, She name is {}".format('Liming', age=10, 'Lily') print(s) # SyntaxError: positional argument follows keyword argument
另外,不可以索引和默认格式化混合使⽤。
s = "{} is a {0}".format('Boy', 'Tom', )
print(s)
s1 = "{} is a {1}".format('Boy', 'Tom', )
print(s1)
以上两种写法均报异常。
# ValueError: cannot switch from automatic field numbering to manual field specification 2、进阶⽤法
1、⽀持对参数部分引⽤
可以通过索引对参数的部分进⾏取值。如下:s[0] = w。
s = "The word is {s}, {s[0]} is initials".format(s='world')
# The word is world, w is initials
print(s)
2、数字的处理
普通的直接匹配数字没什么好说的,与基础部分的字符串匹配⼀样。
s = 'π is {}'.format(3.1415926)
print(s) # π is 3.1415926
如何使⽤format 保留两位⼩数呢? 需要使⽤:.2f,在⽤%进⾏格式化时我们使⽤的是%:.2f
s = 'π is {:.2f}'.format(3.1415926)
print(s) # π is 3.14
s1 = 'π is %.2f'% 3.1415926
print(s1) # π is 3.14
同时这种⽅法还可以⽤于字符串截取,不过数字后⾯就不能加f了。
s = "{:.1}".format('Hello')
print(s) # H
给数字加千位符
s = "{:,}".format(1000000)
print(s) # 1,000,000
将数字转换成⼆进制
s = "{:b}".format(8)
print(s) # 1000
将数字转换成⼋进制
s = "{:o}".format(8)
print(s) # 10
将数字转换成⼗六进制
s = "{:X}".format(12)
print(s) # Cpython格式化输出format
总结如下
b: 输出整数的⼆进制⽅式;
c: 输出整数对应的 Unicode 字符;
d: 输出整数的⼗进制⽅式;
o: 输出整数的⼋进制⽅式;
x: 输出整数的⼩写⼗六进制⽅式;
X: 输出整数的⼤写⼗六进制⽅式;
3、格式处理
通过:+数字指定转换后的字符串长度,不⾜的部分⽤空格补充
s = "{:2}b".format('a')
print(s) # a b (a后⾯补了⼀个空格)
# 如果指定的长度⼩于参数的长度,按照原参数匹配
s1 = "{:2}World".format('Hello')
print(s1) # HelloWorld
4、字符的填充
可通过:符号^数字进⾏字符串的填充。 其中数字为填充后的字符串总长度。s = "{:*^10}".format('Hello')
print(s) # **Hello***
s = "{:-^20}".format('123456')
print(s) # -------123456-------
如果数字⼩于字符串的长度,则不进⾏填充操作。
s = "{:*^3}".format('Hello')
print(s) # Hello
5、list、tuple的拆分
在format格式化时,可使⽤* 或者 ** 进⾏对list、tuple拆分。
foods = ['fish', 'beef', 'fruit']
s = 'i like eat {} and {} and {}'.format(*foods)
# i like eat fish and beef and fruit
print(s)
foods = ['fish', 'beef', 'fruit']
s = 'i like eat {2} and {0} and {1}'.format(*foods)
# i like eat fruit and fish and beef
print(s)
dict_temp = {'name': 'Lily', 'age': 18}
# 字典需要⽤ ** 进⾏拆分
s = 'My name is {name}, i am {age} years old'.format(**dict_temp) print(s) # My name is Lily, i am 18 years old
史上最全Python资料汇总(长期更新)。隔壁⼩孩都馋哭了 — 点击领取
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论