Python字符串格式化
一、%占位操作符
格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。
字符串格式化方法:在字符串中需要格式化的地方一律用%s来表示。然后输出的时候在%的左侧放置一个字符串(需要格式化的字符串),右侧放置需要用来格式化字符串的值(可以是一个数字或者一个字符串,也可以是包含多个值的元组或者字典)。
格式化字符串中的%s 部分称为转换说明符,它标记了需要插入转换值的位置。如果要格式化实数(浮点数),可以使用f说明符,同时提供需要的精度:一个句点再加上希望保留的小数位数。
基本形式:%[转换标记][宽度[.精度]]转换类型
常见转换类型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def format_str(): """ 格式化字符串 """ name = "张三" print('欢迎您,%s' % name) # 整型,float类型 num = 12.33 print('您输入的数字是:%.4f' % num) num2 = 54 print('您的编号是: %04d' % num2) t = (1,2,3,5) print('您输入的元组是:%s' % str(t)) print('您的姓名:%(name)s' % {'name':name}) |
二、使用str.format()进行高级操作
它通过{}和:来代替%。
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}'.format('kzc',18) Out[3]: '18,kzc,18' //字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次 In [5]: '{name},{age}'.format(age=18,name='kzc') Out[5]: 'kzc,18' def format_str_2(): # 使用位置 print('欢迎您, {0}, {1},---{0}说'.format('张三', '好久不见')) # 使用名称 d = { 'username': '李四', 'num': 45 } print('您好,{username}, 您的编号是{num}'.format(**d)) # 格式化元组 point = (1, 6) print('坐标位置:{0[0]}:{0[1]}'.format(point)) # 格式化类 user = User('李四', 23) # print(user.show()) print(user) |
三、格式化类
1 2 3 4 5 6 7 8 9 10 11 12 |
class User(object): def __init__(self, username, age): self.username = username self.age = age def show(self): return '用户名:{self.username}, 年龄: {self.age}'.format(self=self) def __str__(self): return self.show() |