Python的三种格式化字符串方法

字符串的拼接会产生很多新的字符串对象,造成内存空间的浪费。并且在Python中完全不同的两个东西时不能拼接到一起的,比喻说字符串和整数不能拼接到一起。所以可以使用格式化字符串来解决这一些问题。

name = 'Bob'
age = 20
print(name+'hello') # Bobhello
print(name+age) # TypeError: can only concatenate str (not "int") to str

1、% 作占位符

%c格式化字符及其ASCII码
%d或者%i格式化整数
%s格式化字符串
%f格式化浮点数,可以指定小数点后的精度,默认保留小数点后6位。
%e科学计数法
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
图片[1]-Python的三种格式化字符串方法-尤尤'blog
print('%c' % 97)    # a

name = 'Bob'
age = 20
score = 89.5

print('我的名字叫%s,今年%d岁了,我的成绩是%f。' % (name,age,score))   # 我的名字叫Bob,今年20岁了,我的成绩是89.500000。

# 占位符和实际值的个数要一样,否则报错
print('我的名字叫%s,今年%d岁了,我的成绩是%s。' % (name,age))   # TypeError: not enough arguments for format string

注意:输入的个数和占位符的个数要一样,否则会报错。

2、format()方法,使用{} 作占位符

format():将接收到的参数格式化,并将他们放到占位符{}所在的字符串中。它接收的参数不限数量,可分为位置参数和关键字参数

可以通过索引来确保参数被放在了正确的占位符中。

图片[2]-Python的三种格式化字符串方法-尤尤'blog
name = 'Bob'
age = 20
score = 89.5

# 位置参数
print('我的名字叫{0},今年{1}岁了,我的成绩是{2:.2f}。'.format(name,age,score))  # 我的名字叫Bob,今年20岁了,我的成绩是89.57。

# 关键字参数
print('我的名字叫{a},今年{b}岁了,我的成绩是{c:.2f}。'.format(a = name,b = age,c = score))  # 我的名字叫Bob,今年20岁了,我的成绩是89.57。

# 不写索引号,就是按顺序放
print('我的名字叫{},今年{}岁了,我的成绩是{}。'.format(name,age,score)) # 我的名字叫Bob,今年20岁了,我的成绩是89.5。
# 根据占位符中的索引号放入相应的数据
print('我的名字叫{1},今年{0}岁了,我的成绩是{2}。'.format(age,name,score)) # 我的名字叫Bob,今年20岁了,我的成绩是89.5。

print('我的名字叫{0},今年{1}岁了,我爱{0}。'.format(name,age)) # 我的名字叫Bob,今年20岁了,我爱Bob。

3、f-string 格式化字符串

f'{}’ 在需要添加变量的地方写上 {变量名} 即可 。字符串前面的 f 不要忘了。

name = 'Bob'
age = 20
score = 89.5

print(f'我叫{name},今年{age}岁了,我的成绩是{score}')   # 我叫Bob,今年20岁了,我的成绩是89.5

设置宽度和精度

m.n 其中m表示显示的宽度,n表示小数点后的位数。

%.2f 表示保留小数点后两位。

# %10d 中的10表示宽度
print('%10d' % 6)   #         6
print('%10s' % 'aa')#        aa

# %.3f 表示保留小数点后3位。
print('%.3f' % 3.1415926)   #3.142

# 同时表示宽度和精度
print('%10.3f' % 3.1415926)   #     3.142

# :前面的索引号可以省略不写,10.3f中的10表示宽度,.3f表示保留小数点后3位
print(' {:10.3f} '.format(3.1415926))   #      3.142 

# {2:.3f}   2表示占位符的索引,.3f表示的是精度
print('我的名字叫{0},今年{1}岁了,我的成绩是{2:.3f}。'.format(name,age,score))   # 我的名字叫Bob,今年20岁了,我的成绩是89.568。

print(f'我叫{name},今年{age:5}岁了,我的成绩是{score:.2f}')   # 我叫Bob,今年   20岁了,我的成绩是89.57
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容