格式化字符串是程序设计语言中用于指定输出参数的格式化与相对位置的字符串参数。其中的转换说明用于把随后的对应一个或多个函数参数转换为相应的格式输出:格式化字符串中转换说明以外的其他字符原样输出。
1 | >>> "I like %s" |
在这个字符串中,有一个字符 %s 就是一个占位符,这个占位符可以被其他字符串取代
1 2 | >>> "I like %s" % "girl" 'I like girl' |
自Python2.6以后提倡使用字符串的 format() 方法:string.format(*args,**kwargs)
1 2 | >>> "I like {1} and {0}" . format ( 'girl' , 'dog' ) 'I like dog and girl' |
1 2 | >>> "I like {0} and {1}" . format ( 'girl' , 'dog' ) 'I like girl and dog' |
{0}和{1}作为占位符占据两个位置,然后调用str.format()方法分别把“girl”和“dog”两个参数传入对应的占位符。str.format()方法返回的是一个字符串(“I like girl and dog”)
既然是格式化,那么就一定会有各种方便适应的格式,让输出的结果符合指定格式
1 2 | >>> "I like {0:5} and {1:>5}" . format ( 'girl' , 'dog' ) 'I like girl and dog' |
{0:5}表示第一个位置占用五个字符默认左对齐,{1:>5}表示第二个位置占用五个字符表示右对齐
1 2 | >>> "I like {0:^5} and {1:^5}" . format ( 'girl' , 'dog' ) 'I like girl and dog ' |
两个占位符都占用五个字符,并且参数在五个占位符中居中对其
1 2 | >>> "I like {0:^5.2} and {1:^5.2}" . format ( 'girl' , 'dog' ) 'I like gi and do ' |
两个占位符都占用五个字符,并且参数在五个占位符中居中对其,传入的字符串只截取两个字符。girl->gi dog->do
str.format() 中除了可以传入字符串,还可以传入数字
1 | "I like {0:10d} and {1:10.1f}" . format ( 520 , 5.20 )<br> 'I like 520 and 5.2' |
传入数字默认右对齐,{1:10.1f}中 .1 表示保留小数点后一位,d代表整数,f代表浮点数,如果不在传入浮点数的时候不用 f 则会出现下面情况
1 2 | >>> "I like {0:10} and {1:10.1}" . format ( 520 , 5.20 ) 'I like 520 and 5e+00' |
1 2 | >>> "I like {sex} and {pet}" . format (pet = 'dog' ,sex = 'girl' ) 'I like girl and dog' |
这是一种关于字典的格式化方法
1 2 3 | >>>data = { 'name' : 'jiaxiangfei' , 'sex' : 'boy' } >>> '{name} is a {sex}' . format ( * * data) 'jiaxiangfei is a boy' |
str.format(*args,**kwargs) 只是字符串的格式化方法