变量与字符串的连接 - format、格式化字符串
变量与字符串的连接
先当以如下三个变量:
name='wwb'
age='17'
job='study'
方法一:利用+号进行连接
>>>info1='''Welcome to '''+name+''''scode kingdom
... Name:'''+name+'''
... Age:'''+age+'''
... Job:'''+job
>>>print(info1)
Welcome to wwb's codekingdom
Name:wwb
Age:17
Job:study
配合三引号可以换行输出且连接变量与字符串
方法二:利用格式化字符串进行连接
>>>info2='''Welcome to %s's code kingdom
... Name:%s
... Age:%s
... Job:%s'''%(name,name,age,job)
>>>print(info2)
Welcometowwb'scode kingdom
Name:wwb
Age:17
Job:study
我们经常会输出类似 “亲爱的xxx你好!你xx月的话费是xx,余额是xx” 之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。
python中%就是用来格式化字符串的。在字符串内部,用%s表示字符串,%d表示整数,字符串里有几个占位符,后面就跟几个值或变量,顺序要一一对应。如果只有1个占位符则后面可以省略括号。
>>>'hello,%s'%'world'
'hello ,world'
>>>'hello%s,hello %s'%('world','tom')
'hello world,hello tom'
常用的占位符
%d 整数
%f 浮点数
%s 字符串
%x 十六进制
%d:
在%与d之间加非0的数字表示这个占位符最少的长度(长度数值)。若'值长度'小于'长度数值'则将值放在最后( 为空格)
>>>'%d-%2d'%(3,3)
'3- 3'
在%与长度数值之间加0,表示在'值长度'小于'长度数值'时自动补‘0’
>>>'%2d-%02d'%(3,3)
' 3-03'
%f:
%f默认保留6位小数,
>>>'%f'%1
'1.000000'
指定保留的小数位数在%与f之间加 '.n'(n为位数)
例如:保留3位小数和4位小数
>>>'%.3f-%.4f'%(1,2)
'1.000-2.0000'
若是想输出一个'%'字符串就需要转义,用%%表示一个'%'字符
>>>'他的成绩比去年提升了%.2f%%'%3.145926
'他的成绩比去年提升了3.15%'
方法三:format()方法
索引映射:
>>>info3='''Welcome to {} 's code kindom
... Name:{}
... Age:{}
... Job:{}'''.format(name,name,age,job)
>>>print(info4)
Welcometowwb's code kindom
Name:wwb
Age:17
Job:study
>>>info4='''Welcome to {0} 's code kindom
... Name:{0}
... Age:{1}
... Job:{2}'''.format(name,age,job)
>>>print(info4)
Welcometowwb's code kindom
Name:wwb
Age:17
Job:study
函数部分:
format('czlun',17,)
#str类型要添加用引号
#'czlun'的key为0
#17的key为1,依次增加。
字符部分:
'Name:{} Age:{}'
#format中以{}作为占位符
#占位符里为空,则第一个占位符对应第一个值(对应key为0的值),依次增加
#占位符里为空,则占位符的数量不能大于函数内的值的数量
'Name:{1} Age:{0} Name:{1}'
#若想让每个占位符分别指向函数内的值,只需可以在占位符里填入对应的key
#函数内的值可以被非空占位符多次调用,所以可以出现非空占位符数量大于函数内的值的数量的情况
#注意:空占位符与非空占位符不可混用
任何情况下,函数内的值的数量大于占位符的数量都不会报错
例子:
>>>'Name:{1}Age:{0}'.format(17,'czlun')
'Name:czlun Age:17'
>>>'Name:{}Age:{}'.format(17,'czlun')
'Name:17 Age:czlun'
#可以出现非空占位符数量大于函数内的值的数量的情况
>>>'Name:{}Age:{}'.format(17,'czlun','haha')
'Name:17 Age:czlun'
>>>'Name:{1}Age:{0}'.format(17,'czlun','haha')
'Name:czlun Age:17'
#函数内的值可以被非空占位符多次调用,所以可以出现非空占位符数量大于函数内的值的数量的情况
>>>'Name:{1}Age:{0} Other:{1}'.format(17,'czlun')
'Name:czlun Age:17 Other:czlun'
#占位符里为空,则占位符的数量不能大于函数内的值的数量
>>>'Name:{}Age:{} Other:{}'.format(17,'czlun')
Traceback(mostrecentcalllast):
File"<stdin>",line1,in<module>
IndexError:tupleindexoutofrange
关键字映射:
>>>info5='''Welcome to {_name} 's code kindom
... Name:{_name}
... Age:{_age}
... Job:{_job}'''.format(_name=name,_age=age,_job=job)
>>>print(info3)
Welcometowwb's code kindom
Name:wwb
Age:17
Job:study
函数部分:
format(_name='czlun',_age=17,)
#与索引映射不同的是,用关键字替代了索引号,更容易理解对应的值
字符部分:
'Name:{_name} Age:{_age} Name:{_name}'
#若想让每个占位符分别指向函数内的值,只需可以在占位符里填入对应的关键字
格式限定符
格式限定符是用 : 表示
填充与对齐
填充:
格式限定符后面带填充的长度
格式:{: Num}
>>>'{:5}'.format('a') #'a'长度为1,小于5,执行填充操作
'a '
>>>'{:5}'.format('abcdefg') #'abcdefh'长度为7,不小于5,不执行填充操作
'abcdefg'
#'{:5}'意义:用:表示填充的操作,5表示填充的长度,当值的长度小于5时,便会用空格在末尾将长度补到5(填充结果默认是左对齐)
对齐:
格式限定符后面带对齐符(^、<、>分别是居中、左对齐、右对齐),后面带宽度
格式:
{:^|<|>Num}
>>>'{:^5}'.format('a')
' a '
>>>'{:<5}'.format('a')
'a '
>>>'{:>5}'.format('a')
' a'
用指定字符进行填充:
格式限定符与对齐符中间加一个字符,则使用该字符进行填充,不指定的话默认是用空格填充
>>>'{:*^5}'.format('a')
'**a**'
>>>'{:*<5}'.format('a')
'a****'
>>>'{:*>5}'.format('a')
'****a'
指向函数内的值:
是不是觉得用了这个格式限定符就无法输出函数内其他的值了?
若想让每个占位符分别指向函数内的值,只需可以在格式限定符前填入对应的key
>>>'{0:*^5}'.format('a','b','c')
'**a**'
>>>'{1:*<5}'.format('a','b','c')
'b****'
>>>'{2:*>5}'.format('a','b','c')
'****c'
数据类型
'f' - 浮点数。将数值以浮点数输出
'd' - 十进制。将数字以十进制进行输出。
'b' - 二进制。将数字以二进制数进行输出。
'o' - 八进制。将数字以八进制数进行输出。
'x' - 十六进制。将数字以十六进制数进行输出。
'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。
'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。
'%' - 百分数。将数字以百分数输出
',' - 金额千位分隔符。
#f .2保留两位小数 .1保留1位小数 .0不保留小数
>>>'{:f}'.format(10/3)
'3.333333'
>>>'{:.2f}'.format(10/3)
'3.33'
>>>'{:.1f}'.format(10/3)
'3.3'
>>>'{:.0f}'.format(10/3)
'3'
#d、b o、x、c
>>>'{:d}'.format(10)
'10'
>>>'{:b}'.format(3)
'11'
>>>'{:o}'.format(10)
'12'
>>>'{:x}'.format(10)
'a'
>>>'{:c}'.format(65)
'A'
#e .2保留两位小数 .1保留1位小数 .0不保留小数
>>>'{:e}'.format(1999)
'1.999000e+03'
>>>'{:.3e}'.format(1999)
'1.999e+03'
>>>'{:.2e}'.format(1999)
'2.00e+03'
>>>'{:.1e}'.format(1999)
'2.0e+03'
>>>'{:.0e}'.format(1999)
'2e+03'
#% .2保留两位小数 .1保留1位小数 .0不保留小数
>>>'{:%}'.format(3/10)
'30.000000%'
>>>'{:.2%}'.format(3/10)
'30.00%'
>>>'{:.1%}'.format(3/10)
'30.0%'
>>>'{:.0%}'.format(3/10)
'30%'
#,
>>>'{:,}'.format(100861001010000)
'100,861,001,010,000'