【Python】スライスで文字列を切り取るには?位置の指定方法を紹介

Python_スライス_文字列 プログラミング言語

スライスを使うと文字列の一部を切り取ることができます.
メソッドを使わなくても[]と位置を指定すれば良いので非常に簡単です.

1つややこしい点があるとすればスライス位置でしょう.
文字列のインデックスとは別であり数え方も違います.

今回は文字列をスライスする方法を紹介します.

スライスとは

指定した範囲を切り取ることをスライスと言います.
スライスを使うと文字列の一部を簡単に切り取れます.

スライスは次のように書きます.

文字列[開始位置:終了位置]

文字列のあとに[]を書き,その中に切り取り開始位置と終了位置を指定します.

実際に文字列を切り取ってみましょう.

スライスを使って文字列を切り取る

文字列 abcdefg から一部文字列を切り取ります.

'abcdefg'

文字列のスライス位置を確認しておきましょう.

文字列とそのスライス位置の図|クリックして拡大できます

スライス位置は文字と文字の間に対応しています.
文字のインデックスがスライス位置を表していないので注意しましょう!

a~eまで切り取りたいときはこのように書きます.

'abcdefg'[0:5]
[0:5]を指定してabcdeを切り取る|クリックして拡大できます

矢印で範囲を指定するようなイメージを持つと分かりやすいと思いました.

切り取り位置を指定したイメージ図|クリックして拡大できます

指定位置を省略する

開始位置と終了位置はそれぞれ省略ができます.

開始位置を省略すると開始位置に0を指定したときと同じ処理をします.
そのため文字列の始めから終了位置まですべて切り取ります.

'abcdefg'[:5] # [0:5]と同じ意味
スライス位置0~5まで切り取る|クリックして拡大できます

終了位置を省略すると終了位置にlen(文字列)を指定したときと同じ処理をします.
abcdefg では7が指定されます.

そのため開始位置から最後まですべて切り取ります.

'abcdefg'[2:] # [2:len('abcdefg)]と同じ意味
スライス位置2~7まで切り取る|クリックして拡大できます

開始位置と終了位置どちらも省略するとすべての文字列を切り取ります.

'abcdefg'[:] # [0:len('abcdefg)]と同じ意味
スライス位置0~7まで切り取る|クリックして拡大できます

負数でスライス位置を指定する

負数を使ってスライス位置を指定することもできます.
スライス位置が負数に変わると次のようになります.

スライス位置が負数の場合|クリックして拡大できます

aの前のスライス位置が-7になっていますね.

左のスライス位置が最も小さく,右が大きいことは変わらないようです.

通常のスライス位置の数から文字数(abcdefg=7)を引くと負数のスライス位置になります.
覚えておきましょう.

負数でa~eを切り取るときこのように書きます.

'abcdefg'[-7:-2]
[-7:-2]を指定してabcdeを切り取る|クリックして拡大できます

先程と同じように切り取れました!

まとめ

今回はスライスを使って文字列を切り取る方法を紹介しました.

ポイントはスライス位置でしたね.
スライス位置は文字と文字の間にあります.

文字のインデックス数とは別物なので注意しましょう.

スライス位置は正の数だけでなく負の数もありました.
負数の場合は通常のスライス位置の数から文字数を引いた数になります.