Pythonで、文字列から部分的な文字列を取得する方法について解説します。
部分文字列を取得する
プログラミングをしていると文字列の中から部分的な文字列を取得したくなることがよくあります。そのような場合にはインデックスやスライスといった構文を使うことで文字列の部分文字列を取得することができます。
インデックスとスライスの構文は以下のようになります。
data[idx]
data: 対象文字列
idx: インデックス番号
data[start:end:step]
data: 対象文字列
start: 部分文字列の開始位置
end: 部分文字列の終了位置
step: ステップ幅
以降では、簡単な例を使ってインデックスやスライスにより部分的な文字列を取得する方法を説明します。
インデックスで特定位置の文字を取得する
文字列の中の特定の位置の文字を取得したい場合は、以下のように[]で位置(インデックス)を指定します。
# インデックスで特定位置の文字を取得する data = "abcdefghijklmnopqrstuvwxyz" print(data[0]) print(data[1]) print(data[2]) print(data[25])
【実行結果】 a b c z
インデックスの数値は0から始まることに注意してください。
スライスで部分文字列を取得する
文字列の中の特定の範囲の部分文字列を取得したい場合は、以下のように[start:end:step]のようにを指定します。このように特定の範囲を指定することをスライスと言います。
start, end, stepの指定の仕方により色々な部分文字列を取得できますので、いくつかの例を使ってみてみましょう。
# スライスで部分文字列を取得する data = "abcdefghijklmnopqrstuvwxyz" # start, end, stepを全て指定する print(data[5:10:2]) # startとendを指定する print(data[5:10]) # startのみ指定する print(data[5:]) # endのみ指定する print(data[:10]) # stepのみ指定する print(data[::2]) # マイナスの値を指定する print(data[-5:]) # マイナスの値でstartとendを指定する print(data[-10:-5]) # stepにマイナスの値を指定する print(data[::-1])
【実行結果】 fhj fghij fghijklmnopqrstuvwxyz abcdefghij acegikmoqsuwy vwxyz qrstu zyxwvutsrqponmlkjihgfedcba
startが開始位置、end-1が終了位置、stepが間隔となります。スライスではendの位置の文字は含まないので注意してください。スライスでは、start, end, stepの一部を省略した指定も可能です。
startやendでは、マイナス値を指定することで文字列末尾からの文字位置を指定することもできます。上記の例でいうと末尾のzの位置が-1、yの位置が-2ということになります。
また、stepをマイナスにすることで文字列を逆順にして取得することも可能です。
まとめ
Pythonで、文字列から部分的な文字列を取得する方法について解説しました。
インデックスやスライスを用いて部分文字列を取得するのは文字列操作の基本になるのでしっかり使えるようにしましょう。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。