變量與字符串的連接 - format、格式化字符串

變量與字符串的連接

先當以如下三個變量:

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'key0

#17key1,依次增加。

字符部分:

'Name:{} Age:{}'

#format中以{}作爲佔位符

#佔位符裏爲空,則第一個佔位符對應第一個值(對應key0的值),依次增加

#佔位符裏爲空,則佔位符的數量不能大於函數內的值的數量

'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'

#db oxc

>>> '{: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'

 


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