Pythonサブストリング(部分文字列)入門:スライスで文字列を自由に切り出す方法
Pythonにおける「サブストリング(部分文字列)」とは、文字列から取り出したテキストの一部のことです。Pythonではスライスという機能を使い、「YourString[開始インデックス:終了インデックス:スキップ数]」という形式で部分文字列を簡単に抽出できます。
プログラミングでは、データを複数の部分に分割したい場面がよくあります。たとえば、ユーザーのフルネームから名前だけを取り出したい場合、姓名の2つの部分に分けて処理する必要があります。
Pythonでは、このような処理をどう実現すればよいのでしょうか。その答えとなるのがスライスです。スライスと呼ばれる手法を使うことで、文字列の特定の部分を取得でき、それがサブストリングとなります。この記事では、Pythonにおけるサブストリングの仕組みと、スライスを使った抽出方法を詳しく解説します。
文字列のインデックス:おさらい
スライスの構文について説明する前に、まずPythonの文字列がどのようにインデックスされているかを確認しておきましょう。
Pythonにおいて、文字列とは数字・空白・英字・記号などを含む1つ以上の文字の並び(シーケンス)です。リストなどの他のシーケンス型と同じように、文字列の各部分へアクセスできます。
文字列内の各文字にはそれぞれインデックス番号が割り当てられており、その文字が文字列内のどこにあるかを示します。インデックスは0から始まる点に注意してください。たとえば、文字列「Python Substring!」は次のように表されます。
| P | y | t | h | o | n | (空白) | S | u | b | s | t | r | i | n | g | ! |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
最初の文字「P」のインデックスは0で、最後の「!」は16です。各文字に固有のインデックス番号があるため、文字列内の個々の文字を読み取ったり操作したりすることができます。
Pythonで部分文字列を取得する方法
たとえば、文字列の先頭3文字を取得したい場合はどうすればよいのでしょうか。あるいは、末尾の2文字を取り出したい場合は?
そんなときに役立つのがスライスです。スライスでは、取得したい文字の範囲を指定します。これにより、文字列から任意のデータを取り出せます。構文は次のとおりです。
string[start:end:step]
スライスには3つの要素があります。
- start(開始位置):スライスを開始するインデックス位置。デフォルトは0。
- end(終了位置):スライスを終了する位置。この位置の文字自体は結果に含まれません。デフォルトは文字列の長さ。
- step(ステップ):N番目ごとの文字をスキップする指示。Nは指定したstepの値。デフォルトは1。
サブストリング抽出の具体例
先頭3文字を取得する
まず、文字列から先頭3文字を取得してみましょう。スライス構文を使います。
ourString = "Python Substring!" print(ourString[0:3])
このコードの出力は次のとおりです。
Pyt
開始位置を省略する
開始位置を省略すると、先頭から指定した位置までのすべての文字を取得できます。取得したいテキストが文字列の先頭付近にある場合に便利な方法です。
このテクニックを使えば、0を明示的に指定しなくても先頭3文字を取得できます。
ourString = "Python Substring!" print(ourString[:3])
出力は先ほどの例と同じになります。startのデフォルト値が0であるため、開始位置を省略しても文字列の先頭から文字を取得できるのです。
末尾2文字を取得する
負のインデックス値を使うと、文字列の末尾側から文字を取得できます。
value = "Python" print(value[-2:])
このコードの出力は「on」です。ここでは-2という開始位置を1つだけ指定しています。負の値-2は、文字列の後ろから2番目の位置から取得を開始することを意味します。
その他の活用例
スライスの使い方をさらに理解するために、いくつか例を紹介します。
文字列の最後の1文字を取得する
value = "Python" print(value[-1]) # 出力: n
この例では開始位置のみを指定し、終了位置は指定していません。そのため、文字列の最後の1文字だけが取得されます。
インデックス2〜3の範囲の文字を取得する
value = "Python" print(value[2:3]) # 出力: t
開始位置が2、終了位置が3です。範囲内の文字が返されますが、終了位置は排他的(その位置自体は含まれない)ため、インデックス3の文字は結果に含まれません。
1文字おきにスキップして取得する
value = "Python" print(value[::2]) # 出力: Pto
コロンを2つ続けることで、startとendにデフォルト値を使用することをPythonに伝えています。stepに2を指定しているため、文字列から1文字おきに文字が取得されます。
まとめ
サブストリングとは、より大きな文字列の一部分のことです。部分文字列を取得するには、スライス構文を使用します。スライスでは取得したい文字の範囲を柔軟に定義でき、オプションの第3引数(step)を指定すれば、範囲内の特定の文字をスキップすることも可能です。
start・end・stepの組み合わせを覚えておけば、文字列操作の幅が大きく広がります。ぜひ実際にコードを書いて、さまざまなパターンを試してみてください。
-
Pythonインタープリターとは?仕組みと初心者向けオンライン環境を徹底解説
Pythonは学びやすいプログラミング言語として知られています。その理由のひとつが、自分のマシンに正しいバージョンのPythonをインストールしなくても、オンラインで利用できるPythonインタープリターが数多く存在する点です。本記事では、Pythonインタープリターの仕組みについて解説し、初心者にも使いやすい人気のオンラインインタープリターをご紹介します。 Pythonプログラムはどのように実行されるのか? PythonはJavaと同様に、純粋なインタプリタ言語ともコンパイラ言語とも分類できず、両方の性質を併せ持っています。 ここでいう「コンパイル」とは、特定のプラットフォームに依存し
-
Pythonで文字列に部分文字列が含まれているか確認する3つの方法
Pythonでデータ分析を行っていると、ある部分文字列が別の大きな文字列の中に含まれているかどうかを確認したい場面によく出会います。本記事では、代表的な3つの方法(find()、in演算子、count())を使って部分文字列の存在をチェックする方法を、具体的なコード例とともに解説します。 方法1:find() メソッドを使う find() メソッドは、指定した値が文字列内で最初に出現する位置(インデックス)を返します。値が見つからなかった場合は -1 を返します。この性質を利用して、if文と組み合わせることで部分文字列が含まれているかを判定できます。 コード例 Astring = &quo