スライス - Python
Pythonでの文字列の一部を取得したいときにはスライスという機能を使う。
スライスは[start:end:step]
となっている。また、start
とend
はオフセット(0から)となっていることに注意する。オフセットは先頭から右に向かって0, 1, ...となり、末尾から左に向かって-1, -2, ...となる。
例)
>>> s = 'abcdefghijklmnopqrstuvwxyz'
何も指定しない
すべてを取り出すには[:]
でできる。
>>> s[:]
'abcdefghijklmnopqrstuvwxyz'
startのみ
[start:]
とstartだけ指定すると、startオフセットから末尾まで取得する。
>>> s[20:] 'uvwxyz'
endのみ
[:end]
とendだけ指定すると、先頭からend-1オフセットまで取り出す
>>> s[:8] 'abcdefgh'
startとendを指定
オフセット12から14を取得する。end
の15は含んでいないことに注意する。
>>> s[12:15] 'mno'
startとendに負の数を指定
最後の3文字を取り出す。startに負の数を指定することで、末尾からのオフセットを指定できる。
>>> s[-3:] 'xyz' >>> s[len(s)-3:] 'xyz'
オフセット18から末尾より4文字まで取得する。実際には-3ではなく、-4のw
までになっていることに注意する。
>>> s[18:-3] 'stuvw' >>> s[18:len(s)-3] 'stuvw'
ステップ
ステップを使って先頭から末尾までで7ごとに取得してみる。
>>> s[::7] 'ahov'
オフセット4から19までで3文字ごとに取得する。
>>> s[4:20] 'efghijklmnopqrst' >>> s[4:20:3] 'ehknqt'
オフセット19から末尾までで4文字ごとに取得。
>>> s[19:] 'tuvwxyz' >>> s[19::4] 'tx'
先頭からオフセット20までで5文字ごとに取得する。
>>> s[:21] 'abcdefghijklmnopqrstu' >>> s[:21:5] 'afkpu'
重要なことは末尾のオフセットはend-1
になるということ。
ステップに負の数
ステップに負の数を指定することで逆にステップする。
>>> s[-1::-1] 'zyxwvutsrqponmlkjihgfedcba' >>> s[::-1] 'zyxwvutsrqponmlkjihgfedcba'
オフセットの指定
オフセットの指定はインデックスの指定のときに比べてゆるゆるになっている。文字列の範囲外のオフセットを指定してもエラーにならない。
参考文献
- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る