個人筆記,僅供參考
三、使用字符串
1、字符串基本操作
所有的標(biāo)準(zhǔn)序列操作都適用于字符串,但是字符串不可變,所以不可以給字符串賦值。
2、設(shè)置字符串的格式
替換字段名
在最簡單的情況下,只需向format提供要設(shè)置其格式的未命名參數(shù),并在格式字符串中使用未命名字段。此時,將按順序?qū)⒆侄魏蛥?shù)配對。你還可以給參數(shù)指定名稱,這種參數(shù)將被用于相應(yīng)的替換字符中。
>>> "{foo}{}{bar}{}".format(1,2,bar=4,foo=3)
'3142'
還可以通過索引來指定使用的未命名參數(shù)
>>> "{foo}{1}{bar}{0}".format(1,2,bar=4,foo=3)
'3241'
基本轉(zhuǎn)換
指定要在字段中包含的值后,就可添加有關(guān)如何設(shè)置其格式的指令了。首先,可以提供轉(zhuǎn)換標(biāo)志。
>>> print("{pi!s}{pi!r}{pi!a}".format(pi="π"))
π'π''\u03c0'
上面三個標(biāo)志(s,r和a)指定分別使用str、repr和ascii進行轉(zhuǎn)換。
類型說明符:
| 類型 | 含義 |
|---|---|
| b | 將整數(shù)表示為二進制數(shù) |
| c | 將整數(shù)解讀為Unicode碼點 |
| d | 將整數(shù)視為十進制數(shù)進行處理,這是整數(shù)默認的說明符 |
| e | 使用科學(xué)表示法來表示小數(shù)(用e來表示指數(shù)) |
| E | 與e相同,但使用E來表示指數(shù) |
| f | 將小數(shù)表示為定點數(shù) |
| F | 與f相同,但對于特殊值(nan和inf),使用大寫表示 |
| g | 自動在定點表示法和科學(xué)表示法之間做出選擇。這是默認用于小數(shù)的說明符,但在默認情況下至少有1位 小數(shù) |
| G | 與g相同,但使用大寫來表示指數(shù)和特殊值 |
| n | 與g相同,但插入?yún)^(qū)域而異的數(shù)字分隔符 |
| o | 將整數(shù)表示為八進制數(shù) |
| s | 保持字符串的格式不變,這是默認用于字符串的說明符 |
| x | 將整數(shù)表示為十六進制數(shù)并使用小寫字母 |
| X | 與x相同,但使用大寫字母 |
| % | 將數(shù)表示為百分比值 |
寬度、精度和千位分隔符
設(shè)置浮點數(shù)的格式時,默認在小數(shù)點后面顯示6位小數(shù),并根據(jù)需要設(shè)置的寬度,而不進行任何填充。
寬度使用整數(shù)指定:
>>> "{num:10}".format(num=3)
' 3'
>>> "{name:10}".format(name="Bob")
'Bob '
精度也通過指定,但需要在它前面加一個表示小數(shù)點的句點。
"Pi day is {pi:.2f}".format(pi=pi)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ps:應(yīng)該是會返回π的值的,不知道為什么報錯了
最后,可使用逗號來指出你要添加千位分隔符
>>> 'One googli is {:,}'.format(10**100)
'One googli is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000'
3、字符串方法
只介紹幾個重要的
3.1、center
方法center通過在兩邊添加填充字符(默認為空格)讓字符串居中。
>>> "The Middle by Jimmy Eat World".center(39)
' The Middle by Jimmy Eat World '
>>> "The Middle by Jimmy Eat World".center(39,"*")
'*****The Middle by Jimmy Eat World*****'
3.2、find
方法find在字符串中查找子串。如果找到,就返回子串第一個字符的索引,否則返回-1
>>> title = "Monty Python's Flying Circus"
>>> title.find('Monty')
0
3.3、join
join是一個非常重要的字符串方法,其作用與split相反,用于合并序列的元素
>>> seq = ['1','2','3','4','5']
>>> sep = '+'
>>> sep.join(seq)
'1+2+3+4+5'
3.4、lower
方法lower把字符串全部小寫后返回
>>> 'ABCDEFG'.lower()
'abcdefg'
title方法,讓字符串中每個單詞首字母大寫,使用方法同lower
3.5、replace
將指定的子串都替換為另一個字符串,并返回結(jié)果
>>> 'This is a test'.replace('is','eez')
'Theez eez a test'
3.6、split
重要的字符串方法,作用與join相反,用于將字符串拆分為序列
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
3.7、strip
方法strip將字符串開頭和末尾的空白(不包括中間)刪除,并返回結(jié)果。
>>> ' internal whitespace is kept '.strip()
'internal whitespace is kept'
ps:有只刪除開頭空白和值刪除結(jié)尾空白的方法
可以指定參數(shù)刪除哪些字符(開頭結(jié)尾的)
>>> '*** SPAM * for * everyone!!!***'.strip(' *!')
'SPAM * for * everyone'
這里指定的是刪除空白,感嘆號和星號
3.8、translate
與replace一樣替換字符串的特定部分,但不同的是它可以同時替換多個字符,但使用前要創(chuàng)建轉(zhuǎn)換表。
>>> table = str.maketrans('cs','kz')
轉(zhuǎn)換表如上,參數(shù)是兩個長度相等的字符串,使用時第一個字符串中的每個字符都替換為第二個字符串中對應(yīng)的字符
>>> 'this is an incredible test'.translate(table)
'thiz iz an inkredible tezt'
如上,所有c被換成k,所有s被換成z
在創(chuàng)建轉(zhuǎn)換表時可以使用第三個參數(shù),指定要刪除的內(nèi)容。如下,被刪除的為空格
>>> table = str.maketrans('cs','kz',' ')
>>> 'this is an incredible test'.translate(table)
'thizizaninkredibletezt'