Python格式化字符串的4种方式

1 %号

%号格式化字符串的方式从Python诞生之初就已经存在,目前,Python官方没有弃用这种方式,但也不推荐这种方式。

1.格式化的字符串(%s)与被格式化的字符串(传入的值)必须按照位置一一对应。
print('my name is %s and my age is %s' % ('Bob', '18'))
# my name is Bob and my age is 18

2.可以通过字典方式格式化,打破位置带来的限制和困扰

print('my name is %(name)s and my age is %(age)s' % {'age': '18', 'name': 'Bob'})
# my name is Bob and my age is 18

2 str.format

该format方法实在Python2.6中引入的是字符串类型的内置方法。因为str.format的方式在性能上和使用的灵活程度上都比%更胜一筹,所以推荐使用。

2.1 使用位置参数

# 按照位置一一对应
str = 'my name is {} and my age is {}'.format('Bob', '18')
print(str)
# my name is Bob and my age is 18

2.2 使用索引

# 使用索引获取对应的值
str = 'my name is {1} and my age is {0}'.format('18', 'Bob')
print(str) # my name is Bob and my age is 18


2.3 使用关键字参数或者字典

# 可以通过关键字参数或者字典方式可视化,打破位置带来的限制和困扰
str = 'my name is {name} and my age is {age}'.format(name='Bob', age=18)
print(str)  # my name is Bob and my age is 18
dict1 = {'name': 'Bob', 'age': 18}
str1 = 'my name is {name} and my age is {age}'.format(**dict1)  # 使用**解包操作
print(str1)  # my name is Bob and my age is 18

2.4 填充与格式化

#  先取到值,然后再冒号后设定填充方式:[填充方式][对齐方式][宽度]

# *<50 ,左对齐,50个字符,不够的用‘*’填充
print('{0:*<50}'.format('Hello World'))
# Hello World***************************************

# *>50 ,右对齐,50个字符,不够的用‘*’填充
print('{0:*>50}'.format('Hello World'))
# ***************************************Hello World

# *^50 ,居中显示,50个字符,不够的用‘*’填充
print('{0:*^50}'.format('Hello World'))
# *******************Hello World********************


2.5 精度与进制

print('{0:.2f}'.format(3.1415926)) # 精确小数点后2位,四舍五入显示 3.14
print('{0:b}'.format(15))  # 以2进制显示 1111
print('{0:o}'.format(15))  # 以8进制显示 17
print('{0:x}'.format(15))  # 以16进制显示 f
print('{0:,}'.format(1000000))  # 千分位格式化 1,000,000


3 f-Strings

str.format()比%格式化高级了一些,但仍然有着自己缺陷,当传入的字符串过多时,仍然显得十分冗长。Python3.6中引入了f-Strings,不仅比str.format()方法更简洁,同时性能上也略胜一筹。

4 标准库模板

5 总结四种方式的应用场景

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页