這裡會介紹如何使用字串格式化其他的值,並了解一下利用字串的分割,連線,搜尋等方法能做些什麼。
1.基本字串操作
所有標準的序列操作(索引,分片,乘法,判斷成員資格,求長度,取最大值和最小值)對字串同樣適用。但是要千萬記住:字串是不可變的。因此下面的分片賦值是不合法的:
>>> website = "www.python.org
">>> website[-3:] = "
com"
typeerror:object doesn
't support slice assignment
2.字串格式化:精簡版
字串格式化使用字串格式化操作符,即百分號%來實現。
在%的左側放置乙個字串,在右側則放置希望格式化的值。可以使用乙個值,如乙個字串或者數字,也可以使用多個值的元組或者字典。一般情況下使用元組:
>>> format = "hello,%s. %s enough for ya?
">>> values = ("
world
","hot")
>>> print format %values
hello world,hot enough
for ya?
3.字串格式化:完整版
格式化操作符的右運算元可以是任何東西,如果是元組的話,則其中的每乙個元素都會被單獨格式化,每個值都需要乙個對應的轉換說明符。
注意:如果需要轉換的元組作為轉換表示式的一部分存在,那麼必須將它用圓括號括起來,以避免出錯。
>>> '%s plus %s equals %s
' %(1,1,2)
'1 plus 1 equals 2
'
基本的轉換說明符包括以下部分,注意:這些項的順序是至關重要的。
(1)%字元:標記轉換說明符的開始;
(2)轉換標誌(可選):-表示左對齊;+表示在轉換值之前要加上正負號;「」(空白字元)表示整數之前保留空格;0表示轉換值若位數不夠則用0填充。
(3)最小字段寬度(可選):轉換後的字串至少應該具有該值指定的寬度。如果是*,則寬度會從值元組中讀出。
(4)點(.)後跟精確度(可選):如果轉換的是實數,精確度表示出現在小數點後的位數。如果轉換的是字串,那麼該數字就表示最大字段寬度。如果是*,那麼精度將會從元組中讀出。
(5)轉換型別
3.1 簡單轉換
只需要寫出轉換型別,使用起來很簡單:
>>> "price of eggs: $%d
" % 42
'price of eggs:$42
'
3.2 字段寬度和精度
字元寬度是轉換後的值所保留的最小字元個數,精度對於數字轉換來說,是結果中應該包含的小數字數,對字串轉換來說是轉換後的值所能包含的最大字元個數。
可以使用*作為字段寬度或精度,此時數值會從元組引數中讀出:
>>> '%5.*s
' % (3,'
hello')
'hel
'
3.3 符號、對齊和0填充
在字段寬度和精度值之前還可放置乙個「標表」,可以是零,加號,減號或空格。
>>> '010.2f
' %pi
'0000003.14
'>>> print ('
%+5d
' % 10) + '
\n' + ('
%+5d
' % -10)
+10-10
>>> '
%-10.2f
' %pi
'2.14
'>>> print('
% 5d
' % 10) + '
\n' + ('
% 5d
' % -10)
10-10
4.字串方法
4.1 find
find方法可以在乙個較長的字串中查詢子字串。它返回子串所在位置的最左端索引,如果沒有找到則返回-1.
>>> "with a moo-moo here
".find('
moo')7
>>> title = "
python 's flying
">>>title.find(flying)
11
這個方法還可以接受可選的起始點和結束點引數。注意:由起始值和終止值指定的範圍包含第乙個指引,但不包含第二個索引。
>>>subject = "get rich now
">>>subject.find('
get',1)
-1>>>subject.find('
rich
',2,8)
4
4.2 jion
jion方法是非常重要的字串方法,它是split方法的逆方法,用來在佇列中連線元素。
>>> seq = ['1','
2','3'
]>>> j = '+'
>>>j.jion(seq)
'1+2+3
'
注意:需要連線的佇列元素必須都是字串。
4.3 lower
lower方法返回字串的小寫字母版。
>>> "this is a cat
".lower()
'this is a cat
'
4.4 replace
replace方法返回某字串的所有匹配項均被替換後得到的字串。(類似於「查詢並替換」)
>>> 'this is a test
'.replace('
is','
eez')'
theez eez a test
'
4.5 split
這是乙個非常重要的字串方法,是jion的逆方法,用來將字串分割成序列
>>> '1+2+3
'.split('+'
)['1
','2
','3
']
注意:如果不提供任何分隔符,程式會把所有空格作為分隔符(空格,製表,換行等)
4.6 strip
strip方法返回去除兩側(不包括內部)空格的字串:
>>> "this is a cake
".strip()
'this is a cake
'
也可以指定需要去除的字元,將它們列為引數即可:
>>> "*** spam * for everyone!!!
".strip('
* !')'
spam * for everyone
'
4.7 translate
translate方法和replace方法一樣,可以替換字串中的某些部分,但是和前者不同的是,translate方法只處理單個字元。它的優勢在於可以同時進行多個替換,有時候比replace效率高得多。
在使用translate轉換之前,需要先完成一張轉換表。轉換表中是以某字元替換某字元的對應關係。因為這個表有多達256個專案,我們還是不要自己寫了,使用string模組裡面的maketrans函式就行。
maketrans函式接收兩個引數:兩個等長的字串,表示第乙個字串中的每個字元都用第二個字串中相同位置的字元替換。
>>> from string importmaketrans
>>> table = maketrans('
cs','kz'
)>>> '
this is an incredible test
'.translate(table)
'thiz iz an inkredible tezt
'
translate的第二個引數是可選的,這個引數是用來指定需要刪除的字元的。如想要刪除所有空格:
>>> 'this is an incredible test
'.translate(table,'')
'thizizaninkredibletezt
'
python筆記之二
2.使用python實現http連線 其實使用python實現http連線的方法還是十分簡單的。比如說,我們不要求什麼,僅僅只需要獲取內容時,我們可以這樣的書寫 但是對實際應用來說,這個簡單的句子也是不能夠滿足我們各式各樣的開發需求的。比如說,我們需要user agent redirects gzi...
python之dict學習筆記之二
一 遍歷 字典的遍歷方法很多 1.直接利用dict d for i in d print i,d i a aa c cc b bb 2.利用 items for i,v in d.items print i,v a aa c cc b bb當然也可以這樣 for i,v in d.items pri...
SDL學習筆記之二
sdl su ce image sdl loadbmp image.bmp 2.從乙個表面,進行塊複製到另乙個表面 sdl blitsu ce int sdl blitsu ce sdl su ce src,sdl rect sr,sdl su e dst,sdl rect dr 第二個引數指定要傳...