變量與字符串的連接
先當以如下三個變量:
name = 'wwb'
age = '17'
job = 'study'
方法一:利用+號進行連接
>>> info1 = '''Welcome to ''' + name +''''s code kingdom
... Name:''' + name +'''
... Age:''' + age +'''
... Job:''' + job
>>> print(info1)
Welcome to wwb's code kingdom
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)
Welcome to wwb's code 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)
Welcome to wwb '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)
Welcome to wwb '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 (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
關鍵字映射:
>>> info5 = '''Welcome to {_name} 's code kindom
... Name:{_name}
... Age:{_age}
... Job:{_job}''' .format(_name = name, _age = age, _job = job)
>>> print(info3)
Welcome to wwb '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'