現在,我們延續上次學到的東西,繼續研究一些更深入的問題:
字串的切片與索引
字串可以通過string[x] 的方式進行索引、切片,也就是加一個中括號 [] 。字串的切片(slice) 實際上可以看作是從字串中找出你要截取的部分:複製出一小段你指定的部分,並儲存在「另一個地方」,而不會更動到原本的字串。切片獲得的每個字串可以看作是原字串的一個副本。
來看看下面這段程式碼,如果你對字串變數後面一些莫名其妙的數字感到困惑和沒有頭緒的話,趕快照著練習看看吧!待會再解釋。
有發現嗎?這是在交互模式下的結果呦!
name = 'My Name is Mike'print(name[0])
印出 'M'
print(name[-4])
印出 'M'
print(name[11:14]) # from 11th to 14th, 14th one is excluded
印出 'Mik'
print(name[11:15]) # from 11th to 15th, 15th one is excluded
印出 'Mike'
print(name[5:])
印出 'me is Mike'
print(name[:5])
印出 'My Na'
冒號:的用法
想必大家一定看得霧煞煞吧!就讓Bar主來說明一下:
冒號 : 的左右兩邊分別代表著字串的切片從哪裡開始,並到哪裡結束。
以name[11:14] 為例,截取的索引值從第 11個字元開始,直到位置 14但不包含第 14個字元。
而且,Python的第一個位置是從 0開始算起的,這非常重要,可以看上面的程式範例來思考一下。
而像name[5:] 這樣的寫法代表著「從編號為5的字元到結尾」的字串分片。
相反, name[:5] (等於 name[0:5] ) 則代表著「從編號為0的字元開始到編號為5但不包含第5個字元」的字串切片。
這很容易搞混,可以想像成第一種是從5到最後面,寫程式的人懶得數有多少個所以就簡略地寫。第二種是從最前面到5,同樣是懶得寫0,所以就寫成了[:5] 。
然後有負號 - 出現代表的是「倒數第幾個字元」,例如在Shell (互動環境) 輸入:
'Hello'[-1]
會顯示 ‘o’,因為 o 是 Hello 的倒數第二個字元。
如果在Shell輸入:
'Hello'[-4:-1]
則會顯示 ‘ell’,為什麼沒有o了?原因很簡單,跟上面的切片例子一樣,冒號右邊的索引(index)的對應字元不會被包含。
OK!現在我們來進行一個文字小遊戲,我們姑且叫他「魔鬼藏在朋友裡」。請試著輸入程式碼:
word = 'friends'find_the_devil_in_your_friends = word[0] + word[2:4] + word[-3:-1]print(find_the_devil_in_your_friends)
如果正常運作,你就會發現印出了fiend,你也就找到了朋友中的魔鬼,這樣子你有get到Bar主的意思了嗎?
Format格式化的用法
____a word she can get what she ____ for.
A.With B.came
這樣的填空題相信大家都遇過,在Python中有一個類似的方法,當字串中有多個這樣的「空」需要填寫的時候,我們可以使用.format() 進行處理,它的基本使用方法有以下幾種:
基本的架構都是「字串.format(….)」,字串裡需要填空的部分用大括號{}表示,format裡的參數也可以是字串以外的資料,利用這種方法,就能避免上篇文章提到的「文字和數字無法合併」的問題e.x. print(‘Hello’ + 123)。
趕快來練習看看吧!請輸入程式碼:
第一種,直接按照順序將參數填入空格:
print('{} a word she can get what she {} for'.format('With','came'))
第二種,在大括號中指定參數名稱(關鍵字參數):
print('{p} a word she can get what she {v} for'.format(p = 'With',v = 'came'))
第三種,在大括號中指定參數的索引值(index):
print('{0} a word she can get what she {1} for.' .format('With','came'))
以上,恭喜你!你已經差不多掌握了字串的用法了。