【Python】文字列の検索を行う方法(find/in/re.findall)

この記事では、Pythonにおける文字列検索の方法を解説します。

完全一致や部分一致、さらに文字列の先頭や末尾の判定方法まで、具体的なコード例を交えて分かりやすく紹介しています。

目次から探す

完全一致検索の方法

完全一致検索は、文字列が完全に一致するかどうかを確認する方法です。

Pythonでは、いくつかの方法で完全一致検索を行うことができます。

以下では、それぞれの方法について解説します。

方法1: ==演算子を使用する方法

==演算子は、2つの文字列が完全に一致するかどうかを比較するために使用されます。

例えば、以下のように使用します。

str1 = "Hello"
str2 = "Hello"

if str1 == str2:
    print("文字列が完全に一致します")
else:
    print("文字列が一致しません")

この場合、str1とstr2は完全に一致するため、文字列が完全に一致しますと出力されます。

方法2: str.find()メソッドを使用する方法

str.find()メソッドは、指定した部分文字列が文字列内に存在するかを検索し、インデックスを返します。

完全一致検索を行う場合は、以下のように使用します。

main_str = "Python is awesome"
sub_str = "Python"

if main_str.find(sub_str) != -1:
    print("文字列が完全に一致します")
else:
    print("文字列が一致しません")

この例では、main_str内にsub_strが含まれているため、文字列が完全に一致しますと出力されます。

方法3: str.index()メソッドを使用する方法

str.index()メソッドも、指定した部分文字列が文字列内に存在するかを検索し、インデックスを返します。

完全一致検索を行う場合は、以下のように使用します。

main_str = "Welcome to Python"
sub_str = "Python"

try:
    index = main_str.index(sub_str)
    print("文字列が完全に一致します")
except ValueError:
    print("文字列が一致しません")

str.index()メソッドは、部分文字列が見つからない場合にValueErrorを発生させるため、try-exceptブロックで処理しています。

str.find()メソッドは部分文字列の位置を返し、完全一致検索に利用できます。

str.index()メソッドも部分文字列の位置を返しますが、見つからない場合に例外を発生させる点が異なります。

部分一致検索の方法

部分一致検索は、文字列内で指定した部分文字列が存在するかどうかを調べる方法です。

Pythonではいくつかの方法で部分一致検索を行うことができます。

以下では、それぞれの方法について説明します。

方法1: in演算子を使用する方法

in演算子を使用すると、指定した部分文字列が文字列内に含まれているかどうかを簡単に確認することができます。

text = "Pythonプログラミング"
substring = "プロ"
if substring in text:
    print("部分文字列が見つかりました")
else:
    print("部分文字列は見つかりませんでした")

方法2: str.find()メソッドを使用する方法

str.find()メソッドを使用すると、指定した部分文字列が最初に現れるインデックスを返します。

部分文字列が見つからない場合は-1を返します。

text = "Pythonプログラミング"
substring = "プロ"
index = text.find(substring)
if index != -1:
    print(f"部分文字列が見つかりました。インデックス: {index}")
else:
    print("部分文字列は見つかりませんでした")

方法3: str.index()メソッドを使用する方法

str.index()メソッドもstr.find()と同様に部分文字列のインデックスを返しますが、部分文字列が見つからない場合はValueErrorを発生させます。

text = "Pythonプログラミング"
substring = "プロ"
try:
    index = text.index(substring)
    print(f"部分文字列が見つかりました。インデックス: {index}")
except ValueError:
    print("部分文字列は見つかりませんでした")

方法4: 正規表現を使用する方法

正規表現を使用すると、より複雑なパターンに一致する部分文字列を検索することができます。

reモジュールを使用して正規表現を扱います。

import re

text = "Pythonプログラミング"
pattern = r"プロ"
match = re.search(pattern, text)
if match:
    print("部分文字列が見つかりました")
else:
    print("部分文字列は見つかりませんでした")

Pythonの様々な方法を使いこなして、効率的に部分一致検索を行いましょう。

代替判定の方法

文字列の先頭や末尾が特定の文字列で始まるか、終わるかを判定する方法について解説します。

方法1: str.startswith()メソッドを使用する方法

str.startswith()メソッドは、指定した文字列で文字列が始まるかどうかを判定します。

以下は使用例です。

text = "Hello, World!"
if text.startswith("Hello"):
    print("文字列は'Hello'で始まります")
else:
    print("文字列は'Hello'で始まりません")

上記のコードでは、textという文字列がHelloで始まるかどうかを判定しています。

方法2: str.endswith()メソッドを使用する方法

str.endswith()メソッドは、指定した文字列で文字列が終わるかどうかを判定します。

以下は使用例です。

text = "Hello, World!"
if text.endswith("World!"):
    print("文字列は'World!'で終わります")
else:
    print("文字列は'World!'で終わりません")

上記のコードでは、textという文字列がWorld!で終わるかどうかを判定しています。

方法3: 正規表現を使用する方法

正規表現を使用することで、より柔軟な文字列のパターンマッチングが可能です。

以下は正規表現を使用して文字列のパターンを判定する例です。

import re

text = "apple orange banana"
pattern = r"^apple.*banana$"

if re.match(pattern, text):
    print("指定したパターンに一致します")
else:
    print("指定したパターンに一致しません")

上記のコードでは、textという文字列がappleで始まり、bananaで終わるパターンに一致するかどうかを判定しています。

str.startswith()str.endswith()メソッドは、文字列が指定した文字列で始まるか、終わるかを簡単に判定する際に便利です。

正規表現を使用することで、より複雑なパターンの判定が可能となります。

目次から探す