Python如何优美地格式化字符串?

上次Paradoxical使用format()实现了营销号生成器的功能,这次就来教大家format()的常见使用方式吧~

字符串的format()传入的是不定长参数和关键字参数(有关不定长参数和关键字参数请看这里→戳我)。

图片


按照位置传递参数当花括号内没有字段的时候,则按照参数的顺序去格式化,参数的个数只能多不能少。

#定义字符串s = '{}{}{}'
#按照个数传入参数s.format(1, 2, 3)
#传入多余的参数,多余的参数不会被使用s.format(1984)
#传入比需要的数量少的参数,会报错s.format(19)

图片


根据字段传入参数当花括号里有字段的时候,需要传入关键字参数。

#定义字符串s = '{a}{b}{c}'
#按照花括号内的字段传入参数s.format(a='南山', b='公园', c='游泳池')
#调换顺序也可s.format(b='公园', a='南山', c='游泳池')
#所有字段都需要获取参数s.format(b='公园', a='南山')

图片


通过正整数传递参数因为不定长参数会以元组的形式接收传入的参数,所以可以在花括号内传入正整数去获取不定长参数的元素。相当于tuple[n]。

s = '{0}{1}{2}'#将第0、第1、第2个参数按顺序传入字符串s.format(3, 2, 1)
s = '{0}{1}{0}'#将第0、第1、第0个参数按顺序传入字符串s.format('S', 'O')

图片


通过操作符获取参数的内容当传入的参数是字符串、列表、元组等可以用“[]”获取元素的类型时,可以通过“[]”获取参数的内容。同理可以通过“.”获取实例的属性。

#用列表推导式创建列表l = [i for i in range(10)]#定义字符串s = '{0[1]}{0[8]}{0[7]}{0[4]}'#用第0个参数的第1个、第8个、第7个、第4个元素格式化字符串s.format(l)
#定义字典dic = {'addr''南山公园''fac''游泳池'}#定义字符串s = '{0[addr]}{0[fac]}'#用第0个参数的addr字段、fac字段格式化字符串s.format(dic)
#定义字符串s = '{dict[addr]}{dict[fac]}'#用dict参数的addr字段、fac字段格式化字符串s.format(dict=dic)
#定义file类class file:  def __init__(self, name, f_type):    self.name = name    self.f_type = f_type#创建file类的实例f = file('test', 'txt')s = '{file.name} {file.f_type}'#根据file参数的name、f_type属性格式化字符串s.format(file=f)

图片


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章