Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonに文字列の「contains」メソッドはある?部分文字列の判定方法をわかりやすく解説

結論から言うと、Pythonには「contains」という部分文字列判定用のメソッドは存在しません

しかし、代わりに使える方法が2つあります。「in」演算子と「find()」メソッドです。それぞれの使い方を詳しく見ていきましょう。

1. 「in」演算子で部分文字列を判定する

Pythonには、ある文字列が別の文字列に含まれているかどうかを調べるための「in」キーワードが用意されています。最もシンプルでPythonらしい書き方です。

>>> 'ello' in 'hello world'
True
>>> 'no' in 'hello'
False

このように、含まれていれば True、含まれていなければ False が返されます。if文と組み合わせれば、条件分岐も簡単に行えます。

>>> if 'ello' in 'hello world':
...     print('含まれています')
...
含まれています

2. 「find()」メソッドで位置(インデックス)を取得する

部分文字列が含まれているかどうかに加えて、最初に出現する位置(インデックス)も知りたい場合は、find() メソッドを使用します。

見つかった場合はそのインデックスが返され、見つからなかった場合は -1 が返されるのが特徴です。

>>> 'hello world'.find('ello')
1
>>> 'hello'.find('no')
-1

使い分けのポイント

  • 含まれているかどうかだけ知りたい → 「in」演算子を使う(可読性が高い)
  • 位置情報が必要find() メソッドを使う(戻り値が -1 かどうかで判定)

なお、位置情報が必要ない場合は、戻り値が -1 のときに誤って「先頭にマッチした」と解釈しないよう注意しましょう。単純な存在確認なら「in」演算子が最も安全で直感的です。

  1. Pythonで文字列の末尾から部分文字列を削除する方法

    Pythonで文字列の末尾から特定の部分文字列を削除したい場合は、まずその文字列が対象の部分文字列で終わっているかどうかを確認します。終わっている場合は、スライスを使って部分文字列を取り除いた残りの部分だけを取得します。endswith()とスライスを使う方法以下は、rchop関数を実装した例です。文字列が指定した末尾と一致するかをendswith()で判定し、一致すればスライスで末尾を切り取ります。def rchop(string, ending): if string.endswith(ending): return string[:-len(ending)]

  2. Pythonでバックスラッシュによるエスケープを解除する方法

    Pythonでバックスラッシュのエスケープを解除する2つの方法Pythonでバックスラッシュ(\)によってエスケープされた文字列を元に戻す(エスケープ解除する)には、主に2つの方法があります。それぞれの使い方を詳しく見ていきましょう。方法1:ast.literal_evalを使う1つ目は、ast.literal_evalを使って文字列を評価する方法です。この方法では、対象の文字列をさらに別の層の引用符で囲む必要がある点に注意してください。例えば以下のように記述します。>>> import ast>>> a = "Hello,\\nworld&quo