內建字串函式
- 目前為止,我們都使用特殊符號來處理字串,例如 + ,這就是所有的符號了。
- 現在要開始使用 Python 的內建函式:一段可執行一些工作,且擁有名稱的程式。
如何使用函式
- 與 len() 不同的是,有些函式是字串專用。
- 使用字串函式,請輸入:字串名稱.函式名稱(函式任何引數)(本書p.92函式 會詳細討論)
轉換資料類型【使用 str() 】
- 使用 str() 函式來將 Python 資料類型轉換成字串
- 呼叫 print() 印出非字串的物件,及進行字串插值(interpolation)時(本書第七章會談到),Python 會私下使用 str()函式
>>> str(98.6)
'98.6'
>>> str(1.0e4)
'10000.0'
>>> str(True)
'True'
取得長度【使用 len()】
- len()會計算字串內的字元數量
- len()可與其他序列類型一起使用(在本書第三章說明)
>>> len(letters)
26
>>> empty = ""
>>> len(empty)
0
分割【使用 split()】
- 字串.split('分隔符號')字串函式 → 將「一個字串」分解成「一個短字串的串列」
在本書第三章說明串列,串列是:[值, 值, 值, 值, 值, 值](一系列以逗號分隔,並被包在方括號)
字串名稱.split(','/分隔符號引數/空白字元:換行符號、空格、tab)
- 如果是字串名稱.split(沒有指定分隔符號),split()會使用空白字元:換行符號、空格、tab
- 使用split時,就算不會用到引數也要加上括號,Python 才可以知道正在呼叫一個函式。
split()使用:方法一
- 字串 = '字元, 字元, 字元'
- 串列名稱 = 字串.split(','/分隔符號引數/空白字元:換行符號、空格、tab)
- 串列名稱
- ['字元', '字元', '字元']
>>> todos = 'get gloves, get mask, give cat vitamins, call ambulance'
>>> todos.split(',')
['get gloves', ' get mask', ' give cat vitamins', ' call ambulance']
>>> todos.split()
['get', 'gloves,', 'get', 'mask,', 'give', 'cat', 'vitamins,', 'call', 'ambulance']
split()使用:方法二
【步驟一】join()使用:方法二
- 字串名稱 = '字串'(此字串是連結字,可以是分隔符號、換行符號)
- 串列名稱1 = ['字串', '字串', '字串', '字串']
- 字串 = 字串名稱(此字串是連結字,可以是分隔符號、換行符號).join(串列名稱) →串列轉換成字串
【步驟二】split()使用
- 串列名稱2 = 字串.split(字串名稱:此字串是連結字,可以是分隔符號、換行符號) →字串轉換成串列
- 串列名稱2 = ['字串', '字串', '字串', '字串']
- 串列名稱1 = 串列名稱2
>>> friends = ['Harry', 'Hermione', 'Ron']
>>> separator = ' * '
>>> joined = separator.join(friends)
>>> joined
'Harry * Hermione * Ron'
>>> separated = joined.split(separator)
>>> separated
['Harry', 'Hermione', 'Ron']
>>> separated == friends
True
結合【使用 join()】
- join()函式是split()的相反:將一個字串串列結合成一個字串
- join()是一種字串方法,不是串列方法,不能使用 marxes.join(', ')
- 字串名稱.join(引數:字串、分隔符號、換行符號、任何可迭代的字串序列,包括字串)→ 輸出字串
- 分隔符號:,
- 換行符號:\n、空格、tab
join()使用:方法一
- 串列名稱 = ['字串', '字串', '字串', '字串']
- string = 字串(此字串是連結字,可以是分隔符號、換行符號).join(串列名稱)
- print('字串/一段文字', string)
>>> crypto_list =['Yeti', 'Bigfoot', 'Loch Ness Monster']
>>> crypto_string = ', '.join(crypto_list)
>>> print('Found and signing book deals: ', crypto_string)
Found and signing book deals: Yeti, Bigfoot, Loch Ness Monster
join()使用:方法二
- 字串名稱 = '字串'(此字串是連結字,可以是分隔符號、換行符號)
- 串列名稱 = ['字串', '字串', '字串', '字串']
- 字串名稱(此字串是連結字,可以是分隔符號、換行符號).join(串列名稱)
>>> separator = '-'
>>> seq = ('a', 'b', 'c')
>>> separator.join(seq)
'a-b-c'
>>> friends = ['Harry', 'Hermione', 'Ron']
>>> separator = ' * '
>>> joined = separator.join(friends)
>>> joined
'Harry * Hermione * Ron'
join()使用:方法三
- 串列名稱 = ['字串', '字串', '字串', '字串']
- 字串名稱(此字串是連結字,可以是分隔符號、換行符號).join(串列名稱)
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> ', '.join(marxes)
'Groucho, Chico, Harpo'
確認開頭【使用 startswith()】
- 字串名稱.startswith(字元)
>>> poem = '''All that doth flow we cannot liquid name
or else would fire and water be the same;
But that is liquid which is moist and wet
Fire that property can never get.
Then 'tis not cold that doth the fire put out
But 'tis the wet that makes it die, no doubt.'''
>>> poem.startswith('All')
True
確認結尾【使用 endswith()】
- 字串名稱.endswith(字元)
>>> poem.endswith('All')
False
尋找位移值【使用 find()】
- word = '字元'
- 字串名稱.find(word)
>>> word = 'the'
>>> poem.find(word)
73
尋找最後一次出現的位移值【使用 rfind()】
- word = '字元'
- 字串名稱.rfind(字元)
>>> poem.rfind(word)
215
>>> poem.rfind(word)
215
計算出現次數【使用 count()】
- word = '字元'
- 字串名稱.count(字元)
>>> word = 'the'
>>> poem.count(word)
3
確認是否字母與數字【使用 isalnum()】
- 字串名稱.isalnum()
>>> word = 'the'
>>> poem.isalnum()
False
大小寫與對齊
因為字串是不可變的,所以不會實際改變字串。都只是取出值,對它做一些事,再以新字串來回傳結果。
移除兩端的符號序列【使用 strip()】
- 字串名稱.strip('符號')
>>> setup = 'a duck goes into a bar...'
>>> setup.strip('.')
'a duck goes into a bar'
「第一個單字」的「第一個字母」改為大寫【使用 capitalize()】
- 字串名稱.capitalize()
>>> setup.capitalize()
'A duck goes into a bar...'
「所有單字」的「第一個字母」改為大寫【使用 title()】
- 字串名稱.title()
>>> setup.capitalize()
'A duck goes into a bar...'
「所有字元」改為大寫【使用 upper()】
- 字串名稱.upper()
>>> setup.capitalize()
'A duck goes into a bar...'
「所有字元」改為小寫【使用 lower()】
- 字串名稱.lower()
>>> setup.capitalize()
'A duck goes into a bar...'
大小寫對調【使用 swapcase()】
- 字串名稱.swapcase()
>>> setup.capitalize()
'A duck goes into a bar...'
排版函式
在指定的總空格數中對齊字串
置中字串【使用 center()】
- 字串名稱.center(總空格數)
>>> setup.center(30)
' a duck goes into a bar... '
靠左對齊【使用 ljust()】
- 字串名稱.ljust(總空格數)
>>> setup.ljust(30)
'a duck goes into a bar... '
靠右對齊【使用 rjust()】
- 字串名稱.rjust(總空格數)
>>> setup.rjust(30)
' a duck goes into a bar...'
替換【使用 replace()】
方法一:替換一個字串
字串名稱.replace(舊字串, 新字串)
>>> setup = 'a duck goes into a bar...'
>>> setup.replace('duck', 'marmoset')
'a marmoset goes into a bar...'
方法二:指定替換數量字串
字串名稱.replace(舊字串, 新字串, 指定數量)
>>> setup.replace('a ', 'a famous ', 100)
'a famous duck goes into a famous bar...'
>>>
替換數量超過1個,要注意第一個以外的字串,是否被錯誤替換
- 清楚地知道想要替換的子字串時,replace()是很好的選項。
- 注意,第一個以外的字元,如範例:如果將原本的'a ',改為'a',也會更改到其他單字內的 a :
>>> setup.replace('a ', 'a famous ', 100)
'a famous duck goes into a famous bar...'
>>> setup.replace('a', 'a famous', 100)
'a famous duck goes into a famous ba famousr...'
>>>
方法三:替換全部的單字,非單字開頭
- 需用到正規表達式(在本書第七章)
更多字串函式,至官方文件
[]https://docs.python.org/3/library/stdtypes.html#string-methods