AI智能
改变未来

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

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

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

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

#定义字符串
s = \'{}{}{}\'

#按照个数传入参数
s.format(1, 2, 3)

#传入多余的参数,多余的参数不会被使用
s.format(1, 9, 8, 4)

#传入比需要的数量少的参数,会报错
s.format(1, 9)

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

#定义字符串
s = \'{a}{b}{c}\'

#按照花括号内的字段传入参数
s.format(a=\'南山\', b=\'公园\', c=\'游泳池\')

#调换顺序也可
s.format(b=\'公园\', a=\'南山\', c=\'游泳池\')

#所有字段都需要获取参数
s.format(b=\'公园\', a=\'南山\')

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

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)

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python如何优美地格式化字符串?