python中格式化字符串常用的方法

python中格式化字符串常用的方法

这次主要将python格式化字符串的常用三种方法。

在日常生活中经常会输出类似'尊敬的xx,您好,您本月一共消费xxx元,打倒了xx%的用户,再消费xxx元即可获得vip资格。xxxx年xx月xx日'之类的字符串,而xx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。

strs = "尊敬的xxx,您好,您本月一共消费xxx元,打倒了xx%的用户,再消费xxx元即可获得vip资格。 xxxx年xx月xx日。"
name = "a"
cost = 88.88
percent = 99
cost_next = 11.12
y = 2024
m = 7
n = 10

类似c的写法

在Python中,采用的格式化方式和C语言是一致的,用%实现,例如:

#类似c的写法
strs1 = "尊敬的%s,您好,您本月一共消费%f元,打倒了%d%%的用户,再消费%d元即可获得vip资格。 %d年%d月%d日。"
print(strs1 % (name, cost, percent, cost_next, y, m, n))
E:\shujia\python.exe F:\code\day02.py 
尊敬的a,您好,您本月一共消费88.880000元,打倒了99%的用户,再消费11.120000元即可获得vip资格。 2024年7月10日。

Process finished with exit code 0

%运算符就是用来格式化字符串的。在字符串内部用%s来进行字符串替换,实际上还有%d表示整数替换,%f表示浮点替换,%x表示十六进制整数替换等。

python中常见的占位符
占位符替换内容
%s字符串
%d整数
%f浮点数
%x十六进制整数

上述输出中,数字后面小数点位数太多,且月份展示的为单位数字,看着可能不太舒服,一般情况下,我们选择保留小数点后两位,并将日期都展示成双位,这里我们进行小数点的保留与月份位数的更改,如下:

strs1 = "尊敬的%s,您好,您本月一共消费%.2f元,打倒了%d%%的用户,再消费%.2f元即可获得vip资格。 %d年%02d月%d日。"
print(strs1 % (name, cost, percent, cost_next, y, m, n))
E:\shujia\python.exe F:\code\day02.py 
尊敬的a,您好,您本月一共消费88.88元,打倒了99%的用户,再消费11.12元即可获得vip资格。 2024年07月10日。

Process finished with exit code 0

 我们这里将%f中加入了".2"进行保留两位小数的操作,可以随自己的想法对其进行小数点的保留,比如保留一位小数就加入".1"等,且python会自动将其进行四舍五入。更改日期位数的时候我们加入了"02"来表示在月份前面补个0。

f-string写法

使用以f开头的字符串,它也可用于格式化字符串,字符串如果包含{xxx},就会以对应的变量替换,如下:

# f-string写法
strs2 = f"尊敬的{name},您好,您本月一共消费{cost}元,打倒了{percent}%的用户,再消费{cost_next}元即可获得vip资格。 {y}年{m}月{n}日。"
print(strs2)
E:\shujia\python.exe F:\code\day02.py 
尊敬的a,您好,您本月一共消费88.88元,打倒了99%的用户,再消费11.12元即可获得vip资格。 2024年7月10日。

Process finished with exit code 0

这里我们使用f-string的写法进行格式化字符串。相应的,如何在f-string写法中更改保留小数和日期位数呢,这里与上述写法中有些许不同,我们只需要在小数位与日期位后加上":.2f"与":02"即可完成相应操作,如下:

#f-string写法
#:.2f即保留小数点后两位,:02即更改日期位数为两位
strs2 = f"尊敬的{name},您好,您本月一共消费{cost:.2f}元,打倒了{percent}%的用户,再消费{cost_next:.2f}元即可获得vip资格。 {y}年{m:02}月{n}日。"
print(strs2)
E:\shujia\python.exe F:\code\day02.py 
尊敬的a,您好,您本月一共消费88.88元,打倒了99%的用户,再消费11.12元即可获得vip资格。 2024年07月10日。

Process finished with exit code 0

 format()写法

# format()写法
strs3 = "尊敬的{},您好,您本月一共消费{:.2f}元,打倒了{}%的用户,再消费{:.2f}元即可获得vip资格。 {}年{:02}月{}日。"
print(strs3.format(name, cost, percent, cost_next, y, m, n))
E:\shujia\python.exe F:\code\day02.py 
尊敬的a,您好,您本月一共消费88.88元,打倒了99%的用户,再消费11.12元即可获得vip资格。 2024年07月10日。

Process finished with exit code 0

这种写法相较麻烦,所以一般不使用,经常使用f-string写法。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值