1. 程式人生 > 實用技巧 >「文山玩Python做測試」如何從字串中取一段或指定字元

「文山玩Python做測試」如何從字串中取一段或指定字元

我們在加到前面那首詩中,此時我們想取‘一’字又該怎麼做呢?

poetry = "最是那一低頭的溫柔,像一朵水蓮花不勝涼風的嬌羞"

下標法:

如果要取‘揚’字,那我們從第1個字元,從0數起,那麼‘一’應該是3,則可以表示的程式碼為:

poetry = "最是那一低頭的溫柔,像一朵水蓮花不勝涼風的嬌羞"
print(poetry[3])

執行後得到的結果為:

這是從左往右數,為正整數。同樣的,我們也可以從右往左數,比如取‘風’字,則可以:

poetry = "最是那一低頭的溫柔,像一朵水蓮花不勝涼風的嬌羞"
print(poetry[3])
print(poetry[-4])

執行後得到的結果為:

從左往右數,為正整數。從右往左數,則是從-1開始。這在python中叫下標取值。下標取值,可以在後面講到的資料型別,元組、列表中使用,同時也可以在很多自定義類中使用。

切片法:

如果我們想取‘一低頭’的溫柔,又怎麼取呢?我們可以想象一下,如果手裡有兩把標尺,那麼我們只需要同時按下標法,切下去即可,所以可以這樣表示:

執行結果:

為什麼不是poetry([2:5])呢,因為此語法的規則是,左閉右開。要想取的字元,在右邊需要+1。如果想取‘一朵水蓮花’,那麼我們可以:

print(poetry[-12:-7])

執行結果:

如果我們想取‘嬌羞’,那麼我們可以省略右邊的區間,則只需要:

print(poetry[-2:])

執行的結果:

同樣,我們要取‘最是那一低頭的溫柔’,則可以:

print(poetry[:9])

執行結果:

如果字串很多,我們無法數出是第幾個位置時怎麼辦呢?此時我們只需結合前面字串的方法,使用str.index(字串)來獲取開始、結束的位置,再使用切片,即可獲取到內容:

start_index = poetry.index('一朵')
end_index = poetry.index('不勝')
print(poetry[start_index:end_index])

執行結果:

最後總結:

1. 下標法,從左往右數是從0開始;從右往左數是-1開始。

2. 切片取值時,是左閉右開,右邊的下標數需要+1。

3. 靈活的取值方法,可能會結合前文講到的字串的方法。