Pythonのstartswith()とendswith()メソッド徹底解説:初心者向けステップバイステップガイド
Pythonのstartswith()関数は、文字列が指定した部分文字列で始まるかどうかを判定します。一方、endswith()関数は、文字列が指定した部分文字列で終わるかどうかを判定します。どちらの関数も結果としてTrueまたはFalseを返します。
はじめに
プログラミングで文字列を扱っていると、「ある文字列が特定の値で始まっているか、あるいは終わっているかを確認したい」という場面によく出会います。
例えば、ユーザーの電話番号を収集するプログラムを作成する場合、国コードが入力されているかどうかをチェックしたいことがあります。また、ゲームセンターで特別なキャンペーンを実施していて、名前がeで終わるユーザーを探すプログラムを作ることもあるでしょう。
そんなときに役立つのが、Pythonの組み込みメソッドであるstartswith()とendswith()です。これらのメソッドを使えば、文字列が特定の部分文字列で始まるか、または終わるかを簡単に判定できます。
この記事では、startswith()とendswith()の両メソッドの使い方を詳しく解説し、それぞれ実際のプログラムでの使用例も紹介します。
おさらい:文字列のインデックス
startswith()とendswith()について説明する前に、まずPythonの文字列インデックスについて復習しておきましょう。
文字列とは、数字・空白・英字・記号などからなる一連の文字の並びです。リストと同じように、文字列のさまざまな部分にアクセスすることができます。
文字列内のすべての文字にはインデックス値(位置を表す番号)が割り当てられており、インデックスは0から始まります。例として、文字列Python Substringsの各文字とインデックス番号を見てみましょう。
| P | y | t | h | o | n | S | u | b | s | t | r | i | n | g | s | |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
最初の文字Pのインデックス値は0、最後の文字sのインデックス値は16です。各文字が固有のインデックス番号を持っているため、文字の位置に基づいて文字列を操作できます。
Pythonのstartswith()メソッド
startswith()メソッドは、文字列が特定の部分文字列で始まるかどうかをチェックします。文字列が指定した部分文字列で始まっていればTrueを返し、そうでなければFalseを返します。
startswith()メソッドの構文は以下の通りです。
string_name.startswith(substring, start_pos, end_pos)
startswith()メソッドは3つの引数を受け取ります。
- substring:検索対象となる部分文字列(必須)
- start_pos:検索を開始するインデックス位置(省略可能)
- end_pos:検索を終了するインデックス位置(省略可能)
注意点として、substring引数は大文字と小文字が区別されます。つまり、文字列の中からsを探す場合、小文字のsのみが検索対象となり、大文字のSを検索したい場合は明示的に指定する必要があります。また、Pythonのインデックスは0から始まるため、start_posとend_posを指定する際にはこの点に留意してください。
startswith()の使用例
それでは、startswith()メソッドの実際の動作を例で見てみましょう。
あなたがゲームセンターの運営者で、特別なキャンペーンを実施しているとします。名前がJで始まる顧客は、獲得したチケット1,000枚ごとに200枚のボーナスチケットを受け取れるというルールです。このボーナスを受け取るには、顧客がカウンターでアーケードカードをスキャンし、プログラムが名前の最初の文字をチェックする仕組みを作ります。
顧客の名前の最初の文字がJと一致するかどうかを確認するコードは次のようになります。
customer_name = "John Milton"
print(customer_name.startswith("J"))
このコードの出力結果:True
コードの1行目では、顧客の名前を格納する変数customer_nameを定義しています。次に、startswith()を使って、変数customer_nameがJで始まるかどうかを確認しています。この場合、顧客の名前は確かにJで始まっているため、プログラムはTrueを返します。
start_posやend_posを指定しない場合、startswith()は文字列の先頭のみを検索対象とします。
検索範囲を指定する方法
次に、キャンペーン内容を変更して、「フルネームの2文字目から5文字目の間にsが含まれる人」だけが対象になるケースを考えてみましょう。以下のコードで確認できます。
customer_name = "John Milton"
print(customer_name.startswith("s", 1, 5))
このコードの出力結果:False
このコードでは、start_posに1、end_posに5を指定しています。これにより、startswith()は文字列の2文字目から5文字目まで(インデックス1〜5の範囲)だけを検索します。「John Milton」という文字列の該当範囲にsは存在しないため、結果はFalseとなります。
Pythonのendswith()メソッド
endswith()メソッドは、文字列が特定の値で終わるかどうかをチェックします。endswith()はstartswith()と同じように動作しますが、文字列の先頭ではなく末尾を検索する点が異なります。
endswith()メソッドの構文は以下の通りです。
string_name.endswith(substring, start_pos, end_pos)
各引数の意味はstartswith()メソッドの場合と同じです。
endswith()の使用例
endswith()メソッドの具体的な使い方を見てみましょう。航空会社を運営していて、顧客のクレジットカードに払い戻しを行いたいとします。そのためには、手元にある登録情報と照合するために、カード番号の下4桁を確認する必要があります。
顧客から提供された下4桁が、登録されているカード番号と一致するかどうかをendswith()で確認する例がこちらです。
on_file_credit_card = '4242 4242 4242 4242'
matches = on_file_credit_card.endswith('4242')
print(matches)
このプログラムの出力結果:True
この例では、顧客が4242という下4桁を伝えました。endswith()メソッドを使って、その数字が登録済みのカード番号の末尾と一致するかを確認しています。登録されているカード番号は4242で終わっているため、プログラムはTrueを返しました。
検索範囲を指定したendswith()の使い方
endswith()でも、省略可能なstart_posとend_pos引数を使って、特定のインデックス範囲内で部分文字列を検索できます。
カフェを経営していて、顧客の注文内容を格納した文字列があるとします。シェフは注文にHam Sandwich(ハムサンドイッチ)が含まれているか知りたいのですが、文字列の長さは24で、末尾5文字にはORDERという文字が含まれています。そこで、文字列の末尾5文字分を除外して検索したいわけです。
この検索は次のコードで実行できます。
order = "ORDER Latte Ham Sandwich"
includes_ham_sandwich = order.endswith("Ham Sandwich", 0, 19)
print(includes_ham_sandwich)
このコードの出力結果:True
この例では、まずHam Sandwichをsubstring引数として指定しています。
次に、start_posに0を指定しています。end_pos引数を使用する場合、start_posを空にすることはできないためです。そしてend_posには19を指定しています。これは、文字列の末尾5文字がORDERであり、その直前が空白文字であるためです。
検索範囲内の文字列はHam Sandwichで終わっているため、プログラムはTrueを返しました。もしHam Sandwichで終わっていなければ、Falseが返されます。
タプルやリストを使ったendswith()
さらに、endswith()はsubstring引数としてリストやタプルを受け取ることができ、複数の文字列のいずれかで終わるかどうかを一度にチェックできます。
例えば、ファイル名が.mp3または.mp4のどちらかで終わっているかを確認するプログラムを作るとしましょう。次のようなコードで実現できます。
potential_extensions = ['.mp3', '.mp4']
file_name = 'music.mp3'
print(file_name.endswith(potential_extensions))
このコードの出力結果:True
この例では、まずファイル拡張子のリストを格納する配列potential_extensionsを作成しています。次に、拡張子をチェックしたいファイル名を格納する変数file_nameを宣言しました。
最後に、endswith()メソッドを使って、文字列がpotential_extensionsリスト内のいずれかの拡張子で終わるかどうかを確認しています。この場合、ファイル名は.mp3で終わっており、これはリストに含まれているため、プログラムはTrueを返しました。
まとめ
startswith()とendswith()メソッドを使うことで、Pythonの文字列が特定の部分文字列で始まるか、または終わるかをそれぞれ判定できます。どちらのメソッドにも省略可能な引数が用意されており、文字列内のどこからどこまでを検索対象にするかを柔軟に指定できます。
この記事では、startswith()とendswith()両メソッドの使い方を解説し、それぞれの実用的なコード例を紹介しました。これであなたも、プロのようにこれらのメソッドを使いこなして、文字列の先頭や末尾をチェックできるようになったはずです。
-
Pythonインタープリターとは?仕組みと初心者向けオンライン環境を徹底解説
Pythonは学びやすいプログラミング言語として知られています。その理由のひとつが、自分のマシンに正しいバージョンのPythonをインストールしなくても、オンラインで利用できるPythonインタープリターが数多く存在する点です。本記事では、Pythonインタープリターの仕組みについて解説し、初心者にも使いやすい人気のオンラインインタープリターをご紹介します。 Pythonプログラムはどのように実行されるのか? PythonはJavaと同様に、純粋なインタプリタ言語ともコンパイラ言語とも分類できず、両方の性質を併せ持っています。 ここでいう「コンパイル」とは、特定のプラットフォームに依存し
-
Pythonのstartswith()とendswith()の使い方をわかりやすく解説
startswith()メソッドとはPythonの文字列(str)クラスには、startswith()という便利なメソッドが用意されています。このメソッドは、指定した接頭辞(プレフィックス)で文字列が始まっているかどうかを判定し、結果をTrueまたはFalseで返します。呼び出し方は以下の通りです。>>> hello world.startswith(hell) True >>> hello world.startswith(nope) False上記の例では、hello worldがhellで始まるため最初の判定はTrueとなり、nopeでは始まらないため