字符串的格式化
‘字{}符串’.format(变量)
用变量替换{}的值
{下标}想{小标}'.format('元素1', '元素2')
{}里的下标是将要填入的元素的下标,一个元素也可以被多次填入到花括号中
'{name},{thing}'.format(name='xx', thing='xx')
也可以用索引来定位
year = 2022
print('我们在year相遇') # 我们在year相遇,所以这样是错误的
print('我们在{}相遇'.format(year)) # 我们在2022相遇
x = 3
y = 10
print('1+2={},2*5={}'.format(x,y)) # 1+2=3,2*5=10
print('{}想{}'.format('我', '你')) # 我想你
print('{1}想{0}'.format('我', '你')) # 你想我
print('{1}想{1}'.format('我', '你')) # 你想你
print('我叫{name},我爱{thing}'.format(name='小花', thing='吃饭')) # 我叫小花,我爱吃饭
所以怎么输出真的{}?
1.用{}代替{}
2.用{}注释{}
print('{},{},{}'.format(1, {}, 3)) # 1,{},3 即用{}代替{}
print('{},{{}},{}'.format(1, 2)) # 1,{},2 即用{}注释{}
字符串的对齐
<
强制字符串在可用空间内左对齐
(默认)
>
强制字符串在可用空间内右对齐
=
强制将填充放置在符号(如果有)之后但在数字之前的位置(这适用于以‘+0000120’的形式打印字符串)
^
强制字符串在可用空间内居中
对齐
格式'{位置索引等:对齐方向显示宽度}'.format()
填充格式'{:填充符显示宽度}'.format()
只对数字有效
print('{:>10}'.format(250))
print('{1:>10}{0:<10}'.format(250,520))
print('{left:>10}{right:<10}'.format(right=1314, left=520))
print('{:010}'.format(250))
#用0来填充,总宽度为10,只对数字有效,format里的数字
print('{:010}'.format(-250)) # -000000250,-号也是宽度
字符串符号选项
+
正数在前面添加正号,负数在前面添加负号
-
只在负数前面添加负号,默认行为
空格
正数在前面添加一个空格,负数在前面添加负号
print('{:+}{:-}'.format(250, -520)) # +250-520
千位分隔符
如果位数不足千位分隔符是不显示的
print('{:,}'.format(1234)) # 1,234 用逗号作为千位分隔符
print('{:_}'.format(1234)) # 1_234 用下划线作为千位分隔符
print('{:,}'.format(123)) # 123
print('{:,}'.format(123456789)) # 123,456,789
精度位数
对于[type]设置为'f'或'F
’的浮点数来说,是限定小数点后
显示多少个数位
对于[type]设置为'g'或'G'
的浮点数来说,是限定小数点前后
显示多少个数位
对于非数字
类型来说,限定的是最大字段
的大小
对于整数
来说,则不允许
使用此选项
格式'{:.位数type}'。format()
print('{:.2f}'.format(3.1415)) #3.14,小数点后的位数为2
print('{:.2g}'.format(3.1415)) # 3.1,小数点前后总位数为2
print('{:.6}'.format('i hate you')) # i hate,总位数6
输出类型
适应整数
b
将参数以二
进制形式输出
c
将参数以Unicode
字符的形式输出
d
将参数以十
进制形式输出
空
跟d
一样
n
跟d
类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置
o
将参数以八
进制形式输出
x
将参数以十六
进制形式输出
X
将参数以十六
进制形式输出
print('{:b}'.format(80)) # 1010000,80的二进制
print('{:c}'.format(80)) # P,80的Unicode字符
print('{:d}'.format(80)) # 80,80的十进制
print('{:}'.format(80)) # 80,80的十进制
print('{:o}'.format(80)) # 120,80的八进制
print('{:X}'.format(80)) # 50,80的十六进制
#
参数以二进制、八进制、十六进制显示时,会在前面添加一个合适的前缀
print('{:#b}'.format(80)) # 0b1010000
print('{:#x}'.format(80)) # 0x50
适应浮点数、负数
传入整数也会转换成浮点数
e
将参数以科学记数法的形式输出(以字母e来标示指数,默认精度为6
),小数点后有6位
E
将参数以科学记数法的形式输出(以字母E来标示指数,默认精度为6
)
f
将参数以定点法的形式输出(不是数用nan标示,无穷用inf标示,默认精度为6
)
F
将参数以定点法的形式输出(不是数用NAN标示,无穷用INF标示,默认精度为6
)
g
通用格式,小数以f形式输出,大数以e的形式输出(小数指较小的数,大数指较大的数)
G
通用格式,小数以F形式输出,大数以E的形式输出
n
跟g
类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置
空
类似于g
,不同之处在使用定点表示法时,小数点后将至少显示一位,默认精度与给定值所需的精度一致
%
以百分比的形式输出(将数字乘以100并显示为定点表示法f
的形式),后面附带一个百分号,精度为6
print('{:e}'.format(3.14)) # 3.140000e+00
print('{:E}'.format(3.14)) # 3.140000E+00
print('{:f}'.format(3.14)) # 3.140000
print('{:F}'.format(3.14)) # 3.140000
print('{:g}'.format(3.14)) # 3.14,小数以f
print('{:g}'.format(31457788)) # 3.14578e+07,大数以e
print('{:%}'.format(0.89)) # 89.000000%
print('{:.2%}'.format(0.89)) # 89.00%,用精度位数来改变精度位数
f-字符串
语法糖:是指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。
将format变成给字符串前加一个f或F
year = 2020
print('我们在{}相遇'.format(year))
print(F'我们在{year}相遇')
x = 3
y = 10
print('1+2={},2*5={}'.format(x,y))
print(f'1+2={x},2*5={y}') # F、f都可以
# 即是将format变成给字符串前加一个f或F