【保存版】Pythonで文字列を含むかどうかを判定する方法

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年7月)

✔当記事は以下のような方へ向けて書かれています

「Pythonで文字列内に特定の文字が含まれているかどうかを判定する方法は?」
「Pythonで文字列操作が学びたい」
「Pythonで文字列を操作する具体的なコード例が見たい」

✔当記事を通じてお伝えすること

  • Pythonで文字列の操作の基本
  • Pythonで文字列が特定の文字を含むかの判定方法とその応用
  • Pythonで文字列操作の具体的な実例

当記事では、Pythonで文字列操作の基本から、特定の文字が文字列に含まれているかどうかの判定方法まで、具体的なコード例と共に詳しく解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロジェクトマネージャー/SE(元外資系金融機関営業)

【副業】ブログ(月間15万PV)/YouTube/Web・アプリ制作

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

  1. “含む”―Pythonで文字列を判定する
    1. in演算子の利用
    2. in演算子での大文字・小文字の認識
    3. in演算子と否定の使用
  2. 文字列中の特定の単語の位置を見つける
    1. find() を活用する
    2. rfind() で文字列の位置を探す
    3. index(), rindex() の使い方と特性
    4. 文字列の中から部分文字列を抽出する方法
  3. Noneに対するエラーハンドリング
    1. 検索元がNoneの場合の例外処理
    2. 検索対象がNoneの場合の例外処理
    3. Pythonのエラーハンドリングの一般的な戦略
  4. Pythonにおける大文字・小文字の無視する検索法
    1. 大文字・小文字を無視した検索について
    2. Pythonの組み込み関数を活用した大文字・小文字の無視
    3. 正規表現を用いた大文字・小文字の無視
  5. 正規表現とPythonの相性
    1. “re.search()”の活用法
    2. “re.findall()”と”re.finditer()”の振る舞いと有効性
    3. 複数の文字列をひとつの正規表現で検索する
    4. 正規表現のパターンを理解する
    5. 正規表現で大文字・小文字を無視する”re.IGNORECASE”の使い方
  6. “含む”―Pythonで文字列が含まれていないことを判定する
    1. Pythonで文字列が含まれていないことを判定する方法
    2. 「not in」演算子の使用例
    3. 「not」演算子と正規表現の組み合わせ
  7. Pythonでの複数文字列検索
    1. 複数の検索対象を扱う場合の戦略
    2. 複数の文字列を検索するためのforループの使用
    3. 複数の文字列を同時に検索する正規表現の使用
  8. 練習問題の解答と詳細な解説
    1. 問題1:文字列”sentence”が”Python”を含むかどうかを判断しましょう。
    2. 問題2:文字列から特定の単語が始まる位置を取得しましょう。
  9. まとめ

“含む”―Pythonで文字列を判定する

ここでは、Pythonで文字列が特定の単語を「含む」かどうかを判定する方法について見ていきます。

  • in演算子の利用
  • in演算子での大文字・小文字の認識
  • in演算子と否定の使用

in演算子の利用

Pythonでは、文字列が特定の単語を含むかどうかを判定する際には、通常、「in」演算子を利用します。

これは非常に直感的で簡単に使えるツールです。

word = "Hello"
sentence = "Hello World"
print(word in sentence)  # This will print: True

in演算子での大文字・小文字の認識

「in」演算子は、大文字と小文字を区別します。

大文字の”H”と小文字の”h”は異なる文字として扱われるのです。

大文字小文字を無視したい場合には、両方の文字列を同じケースに変換しましょう。

word = "hello"
sentence = "Hello World"
print(word in sentence.lower())  # 出力: True

in演算子と否定の使用

「in」演算子と共に「not」を使うことで、文字列が特定の単語を含まないことの確認も可能。

word = "goodbye"
sentence = "Hello World"
print(word not in sentence)  # This will print: True

これらの手法を組み合わせることで、Pythonで文字列の中に特定の単語が含まれているかどうかを効率的に判定できます。

文字列中の特定の単語の位置を見つける

ここでは、Pythonで文字列中の特定の単語の位置を見つける方法について解説します。

具体的には以下のトピックを取り扱います。

  • find() を活用する
  • rfind() で文字列の位置を探す
  • index(), rindex() の使い方と特性
  • 文字列の中から部分文字列を抽出する方法

find() を活用する

Pythonの find() メソッドは、文字列中で指定した部分文字列が最初に現れる位置を返します

もし指定した部分文字列が存在しない場合、 find() メソッドは-1を返すことも覚えておきましょう。

sentence = "Hello, World. World is beautiful."
print(sentence.find('World'))  # 出力: 7

詳しくはこちらの記事で解説しています。

【Python】findメソッドの基本|文字列検索の具体例付き
Pythonのfindメソッドについて知りたいですか?当記事では、Pythonのfindメソッドや関連するメソッドの基本的な使い方や実践的な例を詳細に解説しています。主に実例を中心にご紹介しているので、コードを見ながら手を動かして学べます。初心者の方は必見です。

rfind() で文字列の位置を探す

一方rfind() メソッドは、文字列中で指定した部分文字列が最後に現れる位置を返す関数です。

これも、指定した部分文字列が存在しない場合は-1を返します。

sentence = "Hello, World. World is beautiful."
print(sentence.rfind('World'))  # 出力: 19

index(), rindex() の使い方と特性

index()rindex() メソッドも、 find()rfind() と同様に、部分文字列が現れる位置を返すもの。

ただし index()rindex() は、部分文字列が存在しない場合に、エラー(ValueError)を発生させます。

sentence = "Hello, World. World is beautiful."
print(sentence.index('Hello'))  # 出力: 0
print(sentence.rindex('World'))  # 出力: 19

文字列の中から部分文字列を抽出する方法

文字列から部分文字列を抽出するには、スライスを使用しましょう。

スライスは、 [開始:終了] の形式で、開始位置から終了位置までの文字列を抽出します。

sentence = "Hello, World. World is beautiful."
print(sentence[7:12])  # 出力: World

Pythonでは、文字列から特定の部分文字列を見つけ出すためのさまざまな方法が提供されています。

これらの方法を組み合わせることで、より複雑な文字列操作が可能です。

【簡単】Pythonで文字列を抽出する方法の具体例付きで解説
Pythonで文字列を抽出する方法について知りたいですか?Pythonはプログラミング言語の一つで、文字列操作や抽出が可能です。当記事では、Pythonを使用して文字列を抽出する具体的な方法をコードと共に詳しく解説しています。特にPython初心者の方は必見です。

Noneに対するエラーハンドリング

Pythonでは、None に対する適切なエラーハンドリングが必要です。

None に対して文字列操作を試みると、エラーが発生します。

扱い方をマスターしておきましょう。

  • 検索元がNoneの場合の例外処理
  • 検索対象がNoneの場合の例外処理
  • Pythonのエラーハンドリングの一般的な戦略

検索元がNoneの場合の例外処理

もし None に対して文字列操作を試みると、エラー(AttributeError)が発生します。

したがって、検索元が None でないことを確認してください。

sentence = None
try:
    position = sentence.find('Python')
except AttributeError:
    print("The search string is None.")

Noneについてはこちらをどうぞ。

PythonでNull値を扱う方法をサンプルコード付きで丁寧に解説
Pythonでnull値の扱い方を知りたいですか?当記事では、PythonにおけるNullの基本はもちろん、null判定をおこなう実践的な例を詳しく解説しています。初心者の方でもわかりやすいよう、コードをたくさん載せてますので、ぜひご覧ください。

検索対象がNoneの場合の例外処理

検索対象が None の場合、それを文字列に変換して操作が可能。

search_word = None
sentence = "Python programming is fun."
try:
    position = sentence.find(str(search_word))
except Exception as e:
    print(f"An error occurred: {e}")

Pythonのエラーハンドリングの一般的な戦略

Pythonでは、 try/except ブロックを使用してエラーハンドリングをおこないましょう。

エラーが発生した場合でもプログラムの実行を続けることが可能になるからです。

try:
    # Perform some operation that may throw an exception
except Exception as e:
    # Handle the exception

エラーハンドリングは、プログラムのロバスト性を向上させ、予期しない問題が発生したときにプログラムが適切に反応することを確保するために重要です。

PythonでNull値を扱う方法をサンプルコード付きで丁寧に解説
Pythonでnull値の扱い方を知りたいですか?当記事では、PythonにおけるNullの基本はもちろん、null判定をおこなう実践的な例を詳しく解説しています。初心者の方でもわかりやすいよう、コードをたくさん載せてますので、ぜひご覧ください。

Pythonにおける大文字・小文字の無視する検索法

こちらでは、Pythonで、大文字と小文字を無視して文字列を検索する方法について解説します。

プログラミングにおいて、テキスト検索では大文字・小文字を操作することは必須のスキルです。

  • 大文字・小文字を無視した検索について
  • Pythonの組み込み関数を活用した大文字・小文字の無視
  • 正規表現を用いた大文字・小文字の無視

大文字・小文字を無視した検索について

大文字・小文字を無視したい場面は、ユーザが入力した検索クエリに対して、同じ結果を返したいときなどです。

「Python」と「python」を同じものとして扱いたい場合などがあげられるでしょう。

大文字・小文字のどちらかに統一して、検索するようにしてください。

Pythonの組み込み関数を活用した大文字・小文字の無視

Pythonの組み込み関数lower()またはupper()を使用することで、簡単に大文字小文字を無視して検索ができます。

これらの関数は、文字列をすべて小文字または大文字に変換できるものだからです。

検索する前に、検索文字列と検索対象文字列の両方を同じケース(大文字または小文字)に変換しましょう。

sentence = "Python Programming is fun."
search_word = "PYTHON"
# Convert both to lower case
sentence = sentence.lower()
search_word = search_word.lower()
position = sentence.find(search_word)

正規表現を用いた大文字・小文字の無視

Pythonのreモジュールを使うと、正規表現によるマッチングをおこなえます。

re.IGNORECASEまたはre.Iフラグを使用すると、大文字と小文字を無視したマッチングが可能です

import re

sentence = "Python Programming is fun."
search_word = "PYTHON"
match = re.search(search_word, sentence, re.I)

if match:
    print("Match found!")
else:
    print("No match found.")

正規表現についてはこちらをご覧ください。

【保存版】Pythonの正規表現をコード付きで徹底解説|初心者向け
Pythonの正規表現について知りたいですか?当記事では、Pythonでの正規表現の基本的な使い方や実践的な例を詳細に解説しています。具体例を交えて解説しているで、コードを見ながら実際に手を動かして学べます。初心者の方は必見です。

正規表現とPythonの相性

こちらでは、Pythonで正規表現をどのように活用するかについて取り上げます。

Pythonは、正規表現を使用するための強力なモジュールであるreが備わっているからです。

  • “re.search()”の活用法
  • “re.findall()”と”re.finditer()”の振る舞いと有効性
  • 複数の文字列をひとつの正規表現で検索する
  • 正規表現のパターンを理解する
  • 正規表現で大文字・小文字を無視する”re.IGNORECASE”の使い方

“re.search()”の活用法

“re.search()”は、文字列全体を検索してパターンが見つかったかどうかを返します。

具体的な例を見てみましょう。

import re

sentence = "Python Programming is fun."
pattern = "Programming"

match = re.search(pattern, sentence)

if match:
    print("Match found!")
else:
    print("No match found.")

“Python Programming is fun.”という文字列の中で”Programming”というパターンが見つかったかどうかを判定しています。

“re.findall()”と”re.finditer()”の振る舞いと有効性

“re.findall()”は、文字列からパターンに一致するすべての部分文字列を取り出します。

一方、”re.finditer()”は一致するすべての部分文字列に対するイテレータを返すものです。

import re

sentence = "Python Programming is fun. Programming is also challenging."
pattern = "Programming"

matches_findall = re.findall(pattern, sentence)
matches_finditer = re.finditer(pattern, sentence)

print(matches_findall)  # Output: ['Programming', 'Programming']

for match in matches_finditer:
    print(match.start(), match.end())  # Outputs the start and end indexes of the matches

複数の文字列をひとつの正規表現で検索する方法について詳しく説明します。

複数の文字列をひとつの正規表現で検索する

複数の文字列を一度に検索したいとき、正規表現は非常に便利です。

以下に例を示します。

import re

sentence = "Python Programming is fun. Data analysis is also fun."
patterns = ["Programming", "Data analysis"]

# Join the patterns with a pipe (|). This will search for either "Programming" or "Data analysis"
combined_pattern = "|".join(patterns)

matches = re.findall(combined_pattern, sentence)
print(matches)  # Output: ['Programming', 'Data analysis']

この方法は、複数のパターンを一度に検索する場合に非常に便利です。

正規表現のパターンを理解する

正規表現は単純な文字列検索以上の柔軟性を提供します。

特殊文字(.*?[]など)を使って、特定のパターンを表現可能。

例えば、.は任意の一文字を、*は前の文字が0回以上繰り返すことを表します。

これを利用して、次のように検索することも可能です。

import re

sentence = "The cat sat on the mat."

# This pattern will match any three-letter word in the sentence
pattern = r"\b\w\w\w\b"

matches = re.findall(pattern, sentence)
print(matches)  # Output: ['The', 'cat', 'sat', 'the', 'mat']

正規表現のパターンについては多くのリソースがありますので、詳しく知りたい方はそれらを参照してみてください。

正規表現で大文字・小文字を無視する”re.IGNORECASE”の使い方

正規表現を使用すると、大文字・小文字を無視した検索も可能です。

“re.IGNORECASE”オプションを使用すると、大文字・小文字の違いを無視してマッチングがおこなわれます。

import re

sentence = "Python programming is fun. PYTHON PROGRAMMING is also fun."
pattern = "programming"

matches = re.findall(pattern, sentence, re.IGNORECASE)
print(matches)  # Output: ['programming', 'PROGRAMMING']

“含む”―Pythonで文字列が含まれていないことを判定する

文字列が含まれていないことを確認する方法もご覧ください。

目的によっては、含まれていないことを確認する方が早いでしょう。

  • Pythonで文字列が含まれていないことを判定する方法
  • 「not in」演算子の使用例
  • 「not」演算子と正規表現の組み合わせ

Pythonで文字列が含まれていないことを判定する方法

文字列が特定の部分文字列を含んでいないことを判定するためには、not in演算子を使用します。

この方法は非常に直感的で、簡単に使用できるものです。

以下に具体的な使用例を示します。

sentence = "Python programming is fun."
search_term = "Java"

if search_term not in sentence:
    print(f"次の単語は含まれていません。{search_term}")
# 出力:次の単語は含まれていません。 Java

「not in」演算子の使用例

not in演算子は、文字列が特定の単語やフレーズを含まないことを確認するために頻繁に使用されます。

例えば、ユーザーの入力を検証するときや、特定の文字列が文書に存在しないことを確認するときなどに便利です。

user_input = "I love programming with Python."
disallowed_phrase = "I hate"

if disallowed_phrase not in user_input:
    print("Thank you for your positive input!")
else:
    print("Please avoid negative phrases.")
# Output: Thank you for your positive input!

「not」演算子と正規表現の組み合わせ

正規表現を使うと、複雑な検索パターンを指定できます。

しかし、正規表現で「含まれていない」ことを直接検索することは難しいです。

そのため、「含まれている」ことを検索してから、その結果をnotで否定するという方法がよく用いられます。

import re

sentence = "Python programming is fun."
pattern = "Java"

# Search for the pattern
if not re.search(pattern, sentence):
    print(f"The sentence does not contain: {pattern}")
# Output: The sentence does not contain: Java

Pythonでの複数文字列検索

Pythonにおける検索で、複数の文字列を見つける方法を解説していきます。

  • 複数の検索対象を扱う場合の戦略
  • 複数の文字列を検索するためのforループの使用
  • 複数の文字列を同時に検索する正規表現の使用

複数の検索対象を扱う場合の戦略

Pythonでは、複数の検索語を一度に検索するには、forループや正規表現を利用することが一般的です。

それぞれ以下のような特徴があります。

  • forループを用いた方法」直感的で読みやすい
  • 正規表現を用いた方法:高度な検索パターンに対応する能力を持つ

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

複数の文字列を検索するためのforループの使用

複数の検索対象がある場合、forループでそれぞれが文字列に含まれているかを確認できます。

以下がその例です。

sentence = "Python programming is fun and powerful."
search_terms = ["Python", "Java", "C++"]

for term in search_terms:
    if term in sentence:
        print(f"The sentence contains: {term}")
    else:
        print(f"The sentence does not contain: {term}")
# 出力:
# The sentence contains: Python
# The sentence does not contain: Java
# The sentence does not contain: C++

複数の文字列を同時に検索する正規表現の使用

複数の検索語を一度に検索するための別の方法は、正規表現のreモジュールを使用する方法です。

ひとつの正規表現で、複数のパターンを一度に検索できます。

また正規表現を使用すると、複雑な検索パターンにも対応できます。

import re

sentence = "Python programming is fun and powerful."
pattern = "|".join(["Python", "Java", "C++"])  # Creates a pattern like "Python|Java|C++"

matches = re.findall(pattern, sentence)

for match in matches:
    print(f"The sentence contains: {match}")
# Output: The sentence contains: Python

練習問題の解答と詳細な解説

以下に、これまで学習した内容を活用するための練習問題を提供します。

ひとつずつ手を動かしながらやってみましょう。

問題1:文字列”sentence”が”Python”を含むかどうかを判断しましょう。

解答:

sentence = "Python is a high-level programming language."
if "Python" in sentence:
    print("Python is in the sentence.")
else:
    print("Python is not in the sentence.")

問題2:文字列から特定の単語が始まる位置を取得しましょう。

解答:

sentence = "Python is a high-level programming language."
position = sentence.find("high-level")
print(f"The position of 'high-level' is {position}.")

まとめ

当記事の内容をまとめます。

  • 最もシンプルな文字列検索方法として、in演算子の利用が挙げられる
  • 特定の位置の文字を取り出すためには、index()rindex()が使える
  • 文字列の開始や終了部分を確認するには、startswith()endswith()も利用可能
  • 正規表現を使用して、複雑な検索もできる

Pythonの文字列検索は非常に強力で、多くの場合においてコードのパフォーマンスや効率を向上させられます。

大量のデータや複雑なパターンを扱う場合には、適切な方法を選択することが重要です。

身につけるためにも、当記事のコードを参考に、手を動かしながら学んでみてください。

タイトルとURLをコピーしました