Python 基础合集2:字符串格式化

一、前言

本节主要讲解三种格式化:%、format()和f-string。

环境说明:调出Python测试环境,根据下图操作,出现 >>>,就可以在后面敲相关的代码。
image.png

二、%

基本语法:'%s'% variable'%s%s'% (var1,val2)
常用符号:

符号说明例子
%s传递字符串、整数、浮点数等参数均可image.png
%d或%i传递整数参数image.png
%f或%F传递浮点数参数,默认6位小数image.png
%e或%E传递整数或浮点参数image.png
%g或%G自动识别小数image.png
+显示数字的正负号,仅限数字格式化。image.png
.n保留小数点位数,仅限数字格式化,不够0填充。image.png
m.n.n同上,m是格式化之后的字符总长度,一般地,m>n。不够用空格补足。image.png
m如果仅有m,没有.n,m的含义同上,表示格式化之后的字符总长度,补足补空格。
'%2i'% 1返回' 1'
如果是数字位数不够补0,可在格式化的数字前加0,如'%02i'% 1返回'01'
如果要填充其他数字似乎没有办法,需要使用format()。
image.png
-左对齐,默认是右对齐。image.png
%%表示一个%。其实不属于格式化,由于和格式化字符一致,顺带说明image.png

例子代码合集:

# %s
>>> '%+s'% '123'
'123'
>>> '%+s'% 123
'123'
>>> '%s'% 12.3
'12.3'
>>> '%s'% (1+2j)
'(1+2j)'

# %d或%i
>>> '%i'% 12
'12'
>>> '%i'% 12.6
'12'

# %f或%F
>>> '%f'% 12.6
'12.600000'
>>> '%f'% 12
'12.000000'

# %e或%E
>>> '%e'% 12
'1.200000e+01'
>>> '%e'% 12.3
'1.230000e+01'

# %g或%G
>>> '%g'% 12
'12'
>>> '%g'% 12.3
'12.3'

# +
>>> '%+i'% 12.6
'+12'
>>> '%+i'% -12.6
'-12'
>>> '%+.2f'% -12.6
'-12.60'

# .n
>>> '%.2f'% 12
'12.00'
>>> '%.2f'% 12.6
'12.60'
>>> '%.2e'% 12
'1.20e+01'

# m.n
>>> '%6.2f'% 12
' 12.00'

# m
>>> '%10i'% 12
'        12'
>>> '%10f'% 12
' 12.000000'
>>> '%010i'% 12
'0000000012'

# -
>>> '%-10f'% 12
'12.000000 '
>>> '%-10i'% 12
'12        '

# %%
>>> '%.2f%%'% 12
'12.00%'

如果是多个变量格式化,则采用'%s%s'% (var1,val2),多个变量用括号括起来。
前面字符串的格式化标识%的个数和后面变量的个数要一致,通过位置一一对应。

>>> '%i+%.2f=%.2f'%(-1,2.1,1.1)
'-1+2.10=1.10'

% 还有2种很灵活的用法:

  • 1、先预留位置,后传递值;
  • 2、通过列表的键
a = '这是一个%(adj)s玩法!'%({'adj':'有趣而灵活的'})
print(a)
a = '这是一个%s玩法!'
print(a % '有趣而灵活的')

在这里插入图片描述

三、format()

基本语法:'{}'.format()
常用符号:部分符号和%是一样的,但是支持的功能更多。

# 基本用法就是通过位置进行对应,如下:
>>> '{}'.format(1)
'1'
>>> '{}'.format(1,2)    # 取0位
'1'
>>> '{}{}'.format(1,2)
'12'

# 通过索引定位
>>> '{1}'.format(1,2)
'2'
>>> '{1}{0}'.format(1,2)
'21'

# 保留小数位,加上冒号 : ,后面加上的格式化方式同 % ,冒号前指定位置,默认0
>>> '{:.2f}'.format(1,2)
'1.00'
>>> '{1:.2f}'.format(1,2)
'2.00'

# 显示符号
>>> '{:+}'.format(1,2)
'+1'
>>> '{:+.2f}'.format(1,2)
'+1.00'

# 指定长度并对齐
>>> '{:^4}'.format(1,2)  # 居中对齐,格式化后字符长度为4
' 1  '
>>> '{:<4}'.format(1,2)  # 左对齐,格式化后字符长度为4
'1   '
>>> '{:>4}'.format(1,2)  # 右对齐,格式化后字符长度为4
'   1'

# 指定填充符号
>>> '{:0^4}'.format(1,2)
'0100'
>>> '{:@^4}'.format(1,2)
'@1@@'

# 千分位展示
>>> '{1:,}'.format(1,2345)
'2,345'
>>> '{1:_}'.format(1,2345)
'2_345'

# 最后来个汇总
>>> '{1:*<+10.2f}'.format(1,2345)
'+2345.00**'
>>> '{1:*<+10,.2f}'.format(1,2345)
'+2,345.00*'
>>> '{1:*<+10_.2f}'.format(1,2345)
'+2_345.00*'

format() 也可以先预留位置,后传递值。

a = '这是一个{}玩法!'
print(a.format('有趣而灵活的'))

在这里插入图片描述

四、f-string

该用法可以直接传入变量,不需要像format()一样传入引号后面的内容,比format()简洁一些。

>>> a = 2345
>>> f'{a}'
'2345'
>>> f'{a:*<+10,.2f}'
'+2,345.00*'
>>> f'{2345:*<+10,.2f}'
'+2,345.00*'

五、小结

使用 % 会比较方便快捷一些,日常使用基本够用。format()功能比较强大,也相对复杂一些。f-string处于二者中间,拥有format()强大的功能,又比较简洁,但相对 % 会相对复杂一些,当然,不过作为工具,只要多用,熟悉之后都会变得相对简单。

语法总结:
% :'%[-][+][填充0][宽度][精度][类型]'% [参数]
format():'{{[索引][:][填充][对齐][+][宽度][千分位符][精度][类型]}'.format([参数])
f-string:'{{[变量][:][填充][对齐][+][宽度][千分位符][精度][类型]}'
image.png

>>> '%s:%-+010.2f%%'% ('百分之十二',12)
'百分之十二:+12.00    %'

>>> '{1:*<+10,.2f}'.format(1,2345)
'+2,345.00*'

>>> a = 2345
>>> f'{a:*<+10,.2f}'
'+2,345.00*'

下一篇预告:字符串编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xin学数据

为你点亮一盏灯,愿你前进无阻。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值