Python基础知识——字符串:format() 字符串的格式化

format()基本用法

1、 %号

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

print (‘我叫%s, 身高%scm’ % (name,height)) ** 传入的值为元组,依次填充
%s :占位符 str()
%d-:十进制 整数
%x : 十六进制
%f :浮点型

指定长度:
%5d 右对齐,不足左边补空格
%-5d - 代表左对齐,不足右边默认补空格
%05d 右对齐,不足左边补0

浮点数:
%f 默认是输出6位有效数据, 会进行四舍五入
指定小数点位数的输出 %.2f—保留小数点后2位
‘%4.8f’ 4代表整个浮点数的长度,包括小数,只有当字符串的长度大于4位才起作用.不足4位空格补足,可以用%04.8使用0补足空格

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、通过变量赋值

print('姓名是:{name},年龄是:{age}'.format(name='Tom',age=20))
输出:
姓名是:Tom,年龄是:20
 
变量中使用
name = Ada
age = 20
print('Name is {name},age is {age}'.format(name=name,age=age))

2.5、 填充与格式化

先取到值,然后再冒号后设定填充方式:[填充方式][对齐方式][宽度]
{:5} 指定输出长度=50
字符串 {:50}–左对齐
数值 {:50}–右对齐
使用 > < 可以避免字符串/数值对齐方法不一致
右对齐,不足的长度用表示
< 左对齐,不足的长度用
表示
^ 中间对齐, 不足的长度用*表示
: 号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

*<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()方法更简洁,同时性能上也略胜一筹。

3.1、f-string用大括{ }表示被替换字段,其中直接填入替换内容即可。

name = 'Tom'
age = 20
print(f'姓名是:{name},年龄是:{age}')

输出结果:
姓名是:Tom,年龄是:20

3.2、 f-string填充

① 什么是填充?
  概念:当我们指定了字符串最终的长度的时候,如果现有的字符串没有那么长,那么我们就用某种
   字符(填充字符)来填满这个长度,这就是“填充”。

② 演示代码如下:默认使用空格填充

name = "Huang Wei"
print(f"{name:>20}")
'           Huang Wei'

print(f"{name:<20}")
'Huang Wei           '

print(f"{name:^20}")
'     Huang Wei      '

③ 用指定字符进行填充

name = "Huang Wei"
print(f"{name:_>20}")
'___________Huang Wei'

print(f"{name:_<20}")
'Huang Wei___________'

print(f"{name:_^20}")
'_____Huang Wei______'

注意:填充分为左填充、右填充、居中填充。左填充表示在字符串左侧填充,右填充表示在字符串右侧填充,居中填充表示在字符串左右两侧对称填充。>表示左填充,<表示右填充,^表示居中填充。记忆方法:括号口朝左边,就表示左填充;括号口朝右边,就表示右填充

3.3、 f-string数字符号相关格式描述符:仅针对数值有效


a = 12
b = -25
print(f"{a:+}")
'+12'
print(f"{b:+}")
'-25'

print(f"{a:-}")
'12'
print(f"{b:-}")
'-25'

print(f"{a: }")
' 12'
print(f"{b: }")
'-25'

Python基础知识——字符串:format() 字符串的格式化_第1张图片

3.4、f-string截断与填充的结合使用

当需要格式化的数据类型是“字符串”的时候,才会发生截断。  
截断的含义,以及发生截断的条件,都可以可参考我文章开头提到的文章。

a = "Hello"
# 当发生截断的时候,如果不指定填充符,默认使用空格填充
print(f"{a:10.3}")
'Hel       '
# 在发生截断的时候,使用指定的填充符
print(f"{a:_>10.3}")
'_______Hel'
print(f"{a:_<10.3}")
'Hel_______'

其他格式:

Python基础知识——字符串:format() 字符串的格式化_第2张图片

你可能感兴趣的:(#,Python基础知识——字符串,python,开发语言,后端)