Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
生徒
「Pythonで文字列が特定の言葉で始まっているかどうか調べる方法ってありますか?」
先生
「はい、startswith()とendswith()というメソッドを使えば、文字列の前後を簡単にチェックできますよ。」
生徒
「メソッドっていうのは文字列にくっついて使う関数のことでしたよね?」
先生
「その通りです!この2つのメソッドも、文字列に対して『○○で始まる?』『○○で終わる?』と確認するための命令なんです。今からわかりやすく解説しますね。」
1. startswith()とは?文字列の先頭をチェックするメソッド
startswith()メソッドは、「この文章は特定の言葉で始まっているかな?」と確認したいときに使える便利な機能です。判定結果はTrue(合っている)かFalse(違う)のどちらかで返され、文章の分類や条件分岐にもよく使われます。
まずは、シンプルな例で動きを見てみましょう。
text = "Pythonは楽しい"
print(text.startswith("Python")) # 「Python」で始まるかをチェック
True
このように、文字列の最初が「Python」で始まっているためTrueが返ってきます。もし「Py」や「P」など部分的な一致を調べたい場合でも、同じように先頭が一致していればTrueになります。
例えば次のように、文字列がどんな言葉から始まっているかによって表示するメッセージを変える、といった使い方も簡単にできます。
message = "ありがとうございます"
if message.startswith("ありがとう"):
print("お礼のメッセージですね!")
お礼のメッセージですね!
このようにstartswith()は、文章の意味をざっくり判別したり、データの形式を確認する場面などで活躍する、とても使い勝手のよいメソッドです。
2. endswith()とは?文字列の末尾をチェックするメソッド
endswith()メソッドは、文字列が特定の言葉で終わっているかどうかを調べるために使います。
text = "Pythonは楽しい"
print(text.endswith("楽しい"))
True
このように、文字列の最後が「楽しい」で終わっているのでTrueとなります。
3. 一致しない場合はFalseになる
指定した言葉と合っていない場合は、結果はFalseになります。
text = "Pythonは楽しい"
print(text.startswith("Java"))
print(text.endswith("面白い"))
False
False
このように、始まりや終わりが一致しなければFalseになります。
4. 大文字と小文字は区別されるので注意
startswith()やendswith()は、大文字と小文字を区別します。たとえば「Python」と「python」は別の文字列として扱われます。
text = "Python"
print(text.startswith("python"))
False
このように、アルファベットの大文字・小文字には注意しましょう。
5. 小文字にそろえて比較するテクニック
すべて小文字にそろえてから比較すると、大文字小文字の違いを気にせず使えます。
text = "Python"
print(text.lower().startswith("python"))
True
lower()メソッドを使うことで、文字列をすべて小文字に変換できます。
6. 複数の選択肢をまとめて調べる方法
startswith()とendswith()は、タプル(カンマで区切った複数の値)を渡すと、どれか1つでも一致すればTrueを返します。
text = "hello world"
print(text.startswith(("hi", "hello")))
True
このように、複数の候補を一気にチェックできます。
7. endswith()も同じように複数チェック可能
endswith()も同様に、タプルを使って複数の語尾に対応できます。
filename = "report.pdf"
print(filename.endswith((".pdf", ".docx", ".txt")))
True
ファイルの種類ごとに処理を分けたいときなどに便利です。
8. startswith()とendswith()の違いを整理
startswith():文字列が指定した文字で「始まっているか」チェックendswith():文字列が指定した文字で「終わっているか」チェック
どちらも結果はTrueまたはFalseで返されるので、条件分岐にもよく使われます。
9. 応用:メールアドレスやURLの確認にも使える
endswith()を使えば、メールアドレスのドメインチェックも簡単にできます。
email = "user@example.com"
if email.endswith("@example.com"):
print("社内メールです")
社内メールです
また、URLの先頭が「https://」で始まっているか確認したいときも、startswith()が使えます。
10. 練習問題:文字列の始まりと終わりを判定してみよう
次の文字列が「こんにちは」で始まり、「さようなら」で終わっているかチェックしてみましょう。
text = "こんにちは。今日も一日お疲れさまでした。さようなら"
print(text.startswith("こんにちは"))
print(text.endswith("さようなら"))
True
True
このように、簡単に文章の構成をチェックできるのがstartswith()とendswith()の魅力です。
まとめ
ここまで、Pythonの文字列操作で非常に便利なstartswith()とendswith()の使い方を、基本から応用まで幅広く学んできました。文字列の先頭や末尾を調べる処理は、ファイル名のチェック、URLの判定、メールアドレスの確認、文章の分類、ログ解析など、多くの場面で活用されます。特にWeb開発やデータ加工では、文字列の前後を判断するロジックが頻繁に登場するため、これらのメソッドを知っているだけで、コードの表現力が大きく広がります。
また、複数の文字列をまとめて判定できるタプル指定や、大文字小文字をそろえて比較するテクニックも、実際の実務で非常に役立ちます。たとえば、ユーザー入力の揺れを吸収するときや、複数形式のファイルをまとめて扱うときなど、柔軟に対応できるコードを組むための土台となります。Pythonの文字列操作はシンプルですが、こうした細かなメソッドが非常に賢く働いてくれるため、初心者でも短いコードで効果的な処理を書けるのが魅力です。
さらに、条件分岐と組み合わせることで、文字列処理の応用範囲は一気に広がります。特に、ログデータの分類や文章のトークン解析、ファイル判別などは、指定した文字で始まるかどうか、特定の拡張子で終わっているかというチェックが重要な要素になります。こうした「特定パターンの検出」において、startswith()とendswith()は欠かせない存在です。Pythonを扱ううえで、この二つのメソッドを自然に使えるようになることは、大きな成長につながります。
以下に、今回の学習内容を整理しつつ、応用的な場面でも使える実用的なサンプルコードを掲載します。実務レベルの判定ロジックとしても使える構成にしているので、自分のプロジェクトでも活用できるはずです。
総まとめサンプルコード(実用向け)
texts = [
"https://example.com/start",
"http://test.example.org",
"report_final.pdf",
"archive_2024.zip",
"hello world",
"こんにちは。明日もよろしくお願いします。",
"log_error_20241015.txt"
]
for t in texts:
# URL判定
if t.startswith(("https://", "http://")):
print("URL検出:", t)
# ファイル形式の判定
if t.endswith((".pdf", ".txt", ".zip")):
print("対象ファイル:", t)
# 日本語文章の簡易分類
if t.startswith("こんにちは"):
print("挨拶文:", t)
print("=== 大文字小文字を吸収した比較例 ===")
title = "HelloWorld"
if title.lower().startswith("hello"):
print("英語の挨拶を含むタイトルです")
このように、startswith()とendswith()を組み合わせることで、文字列から簡単に情報を分類したり抽出したりできる強力な仕組みが完成します。日常的なプログラムでも「どの種類のデータか判断したい」という場面は本当に多いため、これらのメソッドが自然に使いこなせると、コードの意図をすばやく伝えられる読みやすいプログラムが実現できます。
文字列処理の基本は、繰り返し使うことで理解が深まり、徐々に「判定の発想」そのものも広がっていきます。ぜひ今回の内容を何度も試しながら、実際の開発の中で活用してみてください。
生徒
「文字列の先頭と末尾を調べるだけで、こんなに応用が効くって思っていませんでした。ファイル判定とかURLチェックにも使えるんですね。」
先生
「そうなんです。シンプルなメソッドですが、実用範囲がとても広いところが魅力です。特に実務では、データを仕分けたり分類したりする処理が毎日のようにありますからね。」
生徒
「タプルを使えば複数の候補をまとめて判定できるのも便利でした。条件分岐がすっきり書けそうです。」
先生
「その通り。細かい条件を丁寧に書くより、タプルを使えばすっきり表現できますし、可読性も上がります。将来ほかの候補が増えたときの修正も簡単です。」
生徒
「大小文字の判定も勘違いしやすいポイントですね。lower()を組み合わせるのがすごく便利だと感じました。」
先生
「大小文字の差は意外とミスが起こりやすいので、事前にそろえて比較するテクニックは本当に役に立ちますよ。」
生徒
「今回学んだ内容なら、実際のコードでもすぐ使えそうです!特にファイル名の判別をする処理は、すぐにでも活用したいです。」
先生
「それは良いですね。文字列判定はPythonの基礎ですが、応用の幅が広いので身につけておくと大きな武器になりますよ。」