「文山玩Python做測試」如何從字串中取一段或指定字元
阿新 • • 發佈:2020-09-16
我們在加到前面那首詩中,此時我們想取‘一’字又該怎麼做呢?
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. 靈活的取值方法,可能會結合前文講到的字串的方法。