1. 程式人生 > >Python 之字串常用方法

Python 之字串常用方法

前言

上一篇介紹了列表的常用方法,其實字串的方法比列表的方法多得多,這裡主要列舉幾個比較常用的。

1.center

center 方法是通過在字串兩邊新增填充字元(預設是空格)讓字串居中,示例如下:

>>> a = 'wabdaw'
>>> a.center(20)
'       wabdaw       '

>>> a = 'wadnjnj'
>>> a.center(20,"*")
'******wadnjnj*******'

2.find

find 方法是用於在字串中查詢子串,如果找到,就返回子串的第一個字元的索引,否則返回-1. 示例如下:

>>> a = "my name is jack"
>>> a.find('name')
3
>>> a.find('waww')
-1

其中 find 方法還可以指定查詢的起點和終點,或者只指定起點或終點:

>>> a = "my name is jack , this is my sister"
>>> a.find('my',3)
26
>>> a.find('my')
0
>>> a.find('my',0,5)
0

3.join

join 是一個非常重要的字串方法,作用和 split相反,用於合併序列的元素,注意,這裡的序列不能時數字列表。

>>> a = ['A','B','C','D']
>>>> '+'.join(a)
'A+B+C+D'

如果合併的序列為數字序列,將會報錯:

>>> a = [1,2,3,4]
>>> '+'.join(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found

4.lower

方法 lower 返回字串的小寫版本。

>>> a = 'this is BOOK'
>>> a.lower()
'this is book'

5.title

方法 title 用於將字串所有單詞首字母大寫,其他所有字母小寫。

>>> a = 'this is BOOK'
>>> a.title()
'This Is Book'

但是這個方法在界定邊界時可能會不合理,例如:

>>> a = "that's ok"
>>> a.title()
"That'S Ok"

針對以上問題,可以使用模組 string 中的函式 capwords 來解決:

>>> import string
>>> string.capwords(a)
"That's Ok"

6.replace

replace 將指定子串替換為另一個字串,並返回替換後的結果。

>>> a = 'this is my sister,my sister is beautiful'
>>> a.replace('sister','brother')
'this is my brother,my brother is beautiful'

注意,這裡是替換所有找到的字串,而不僅僅只替換一個。

7.split

split 的作用剛好與 join 相反,用於拆分字串為序列

>>> a = '1+2+3+4'
>>> a.split('+')
['1', '2', '3', '4']

如果沒有置頂分隔符,將預設在單個或多個連續的空白字元(空格、製表符、換行符)處進行拆分。

8.strip

方法 strip 用於將字串開頭和末尾的空白(不包括中間的空白)刪除,並返回刪除後的結果。

>>> a = '   **wdad   '
>>> a.strip()
'**wdad'

當然,還可以指定要刪除哪些字元:

>>> a
'   **wdad   '
>>> a.strip(' *')
'wdad'

如上,指定要刪除空格和星號。

9.translate

translate 與 replace 一樣替換字串的特定部分,但不同的是 translate 只能進行單字元替換,這個方法的優勢在於能夠同時替換多個字元,因此效率 比 replace 高。但是其用法稍微麻煩一些。 要使用 translate 首先要建立一個轉換表,這個轉換表指出了不同 Unicode 碼點之間的轉換關係。要建立轉換表,可對字串型別 str 呼叫方法 maketrans,這個方法接收兩個長度一樣的字串,並且指定將第一個字串中的每個字元都替換成第二個字串中的相應字元。舉個例子:

>>> a = 'adhbxjawuka adhasnkwq'
>>> table = str.maketrans('abd','123')
>>> a.translate(table)
'13h2xj1wuk1 13h1snkwq'

這裡 table就是建立好的一個轉換表,這個轉換表的意思就是將需要轉換的字串(這裡是a)中所有的 ‘a’ 轉換成 ‘1’ ‘b’ 轉換成 ‘2’ ‘d’ 轉換成 ‘3’ 這裡是一一對應關係。 通過示例結果就很容易理解了。