目录
格式化字符串
类似c++的写法
在日常生活中经常会输出类似"尊敬的xx用户!截止到xx月xx日,您的流量已使用xxG,剩余流量xxG"之类的字符串,而xx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。
在Python中,采用的格式化方式和C语言是一致的,用%实现,例如:
strs = "尊敬的xxx,您好,您本月共消费xxx元,达到了xx%的用户,您再消费xxx元即可获得VIP资格。xxxx年xx月xx日。"
name = "a"
cost = 88.88
percent = 99
cost_next = 11.12
y = 2024
m = 7
d = 10
strs1 = "尊敬的%s,您好,您本月共消费%.2f元,达到了%d%%的用户,您再消费%.2f元即可获得VIP资格。%d年%02d月%02d日。"
print(strs1 % (name, cost, percent, cost_next, y, m, d))
#输出结果:尊敬的a,您好,您本月共消费88.88元,达到了99%的用户,您再消费11.12元即可获得VIP资格。2024年07月10日。
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,则括号可以省略
Python中常见的占位符有:
占位符 | 替换内容 |
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
print('%2d-%02d' % (3, 1))
#输出结果: 3-01
print('%.3f' % 3.1415926)
#输出结果:3.142
print('%7.3f' % 3.1)
#输出结果: 3.100
print('%07.3f' % 3.1)
#输出结果:003.100
format()方法
字符串的format()方法也可以用于格式化字符串,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
strs = "尊敬的xxx,您好,您本月共消费xxx元,达到了xx%的用户,您再消费xxx元即可获得VIP资格。xxxx年xx月xx日。"
name = "a"
cost = 88.88
percent = 99
cost_next = 11.12
y = 2024
m = 7
d = 10
strs2 = "尊敬的{},您好,您本月共消费{:05.2f}元,达到了{}%的用户,您再消费{:.2f}元即可获得VIP资格。{}年{:02}月{:02}日。"
print(strs3.format(name, cost, percent, cost_next, y, m, d))
#输出结果:尊敬的a,您好,您本月共消费88.88元,达到了99%的用户,您再消费11.12元即可获得VIP资格。2024年07月10日。
f-string的写法
使用以f开头的字符串,它也可用于格式化字符串,字符串如果包含{xxx},就会以对应的变量替换
strs = "尊敬的xxx,您好,您本月共消费xxx元,达到了xx%的用户,您再消费xxx元即可获得VIP资格。xxxx年xx月xx日。"
name = "a"
cost = 88.88
percent = 99
cost_next = 11.12
y = 2024
m = 7
d = 10
# 02表示总共是两个位置,多的位置用0去补
strs3 = f"尊敬的{name},您好,您本月共消费{cost:05.2f}元,达到了{percent}%的用户,您再消费{cost_next:.2f}元即可获得VIP资格。{y}年{m:02}月{d:02}日。"
print(strs3)
#输出结果:尊敬的a,您好,您本月共消费88.88元,达到了99%的用户,您再消费11.12元即可获得VIP资格。2024年07月10日。
基础数据类型之间的转换
给定如下数据:
# int
a = 1
b = 0
c = -1
d = -0
# float
e = 1.1
f = 1.0
g = 0.0
h = -0.0
i = -2.1
# str
j = "1"
k = '1.0'
l = '1.2'
m = "True"
n = "False"
o = "0"
# bool
p = True
q = False
int 转 float、str 、bool
# int 转 float
print(float(a), float(b), float(c), float(d))
'''1.0 0.0 -1.0 0.0'''
# int 转 str
print(str(a), str(b), str(c), str(d))
'''1 0 -1 0'''
# int 转 bool 非0即True
print(bool(a), bool(b), bool(c), bool(d), bool(2), bool(-2))
'''True False True False True True'''
float 转 int 、str 、bool
# float 转 int 只取小数点之前的数字
print(int(e), int(f), int(g), int(h), int(i), int(3.9))
'''1 1 0 0 -2 3'''
# float 转 str
print(str(e), str(f), str(g), str(h), str(i))
'''1.1 1.0 0.0 -0.0 -2.1'''
# float 转 bool
print(bool(e), bool(f), bool(g), bool(h), bool(i))
'''True True False False True'''
str 转 int 、float 、bool
# str 转 int
# float样式的str值 不能转换为int 例:print(int(k))
# 只有数值型(整数)的字符串才能转换为int
print(int(j))
'''1'''
print(int(o))
'''0'''
# str 转 float
# 只有数值型的字符串才能转换为float
print(float(j), float(k), float(l), float(0))
'''1.0 1.0 1.2 0.0'''
# str 转 bool
# str 转 bool 只要字符串不是空 结果就是True
print(bool(j), bool(k), bool(l), bool(m), bool(n), bool(o))
'''True True True True True True'''
print(bool(" "))
'''True'''
print(bool("")) #空字符
'''False'''
print(bool(None)) # 空
'''False'''
bool 转 int、float、str
# bool 转 int
print(int(p))
'''1'''
print(int(q))
'''0'''
# bool 转 float
print(float(p))
'''1.0'''
print(float(q))
'''0.0'''
# bool 转 str
print(str(p))
'''True'''
print(str(q))
'''False'''