Pythonで文字列中に特定の単語が含まれているかを調べるには、in
演算子、find()
など、いくつかの方法があります。
この記事では、初学者の方がつまずかないよう、「仕組みと書き方」「違い」「ケース非依存」「複数回検出」などを丁寧に解説します。
find()の型
#find()の型
"文字列".find("検索文字"[,開始位置指定,終了位置指定])
「”検索文字”」で検索したい文字を指定します。開始位置と終了位置は必ず範囲を指定する必要はありません。
in: Pythonで単語(部分文字列)が存在するか調べる基本
text = "Hello, Python programming!"
if "Python" in text:
print("Found!")
else:
print("Not found.")
in
演算子は見つかれば True
、見つからなければ False
を返す、直感的な方法です。
特定条件だけ調べたいときに便利です。
find: 位置(インデックス)を取得する
s = "Hello, Python!"
idx = s.find("Python")
print(idx) # 7
print(s.find("Java")) # -1
- 見つかれば最初の位置(0起点)を返し、見つからなければ
-1
を返します。 index()
は使い方は似ていますが、見つからない場合にValueError
を出す点が異なります。
try:
s.index("Java")
except ValueError:
print("Not found (index throws error).")
大文字・小文字を区別せず(ケース非依存)にするには
if "python" in text.lower():
print("Detected (case-insensitive).")
文字列と検索語を両方 lower()
にすることで、”Python” も “python” として扱えます 。
re: 正規表現で高度な検索
import re
matches = re.findall(r"\b[aA]pple\b", text)
print(matches) # ['apple', 'apple', 'apple']
正規表現(re
モジュール)を使うことで、単語境界などの柔軟な検索が可能です。
その他、findを用いた使用例
項目 | 内容 |
txtファイルから任意の文字列を探索する方法 | 「.txt」拡張子に書かれている文字列からfindを用いて任意の文字列を探索するプログラムを解説しています。 |