Python 文字列の比較と検索 #3

株式会社リュディアです。今回は文字列の比較で文字列の先頭が一致しているか、文字列の末尾が一致しているかを確認する startswith(), endswith() メソッドについてまとめてみます。前方一致後方一致とも呼ばれる手法です。

まず簡単な例からです。以下を見てください。

str1 = 'abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz'
str1.startswith('abc')
>> True
str1.startswith('bcd')
>> False
str1.endswith('xyz')
>> True
str1.endswith('wxy')
>> False

先頭が abc かどうか、末尾が xyz かどうかはそれぞれ返り値は True です。先頭が bcd かどうか、末尾が wxy かどうかはそれぞれ返り値は False です。ここは難しくないですね。

では、次の例を見てみましょう。

str1 = 'abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz'
str1.startswith('cde', 2)
>> True

第 2 引数は検索対照となる文字列の開始位置がどこかを指定しています。つまり文字列 str1 のインデクス 2 = c を検索対象文字列の先頭として扱います。そのため先頭が cde かどうかの返り値は True になります。find, index のときと同様に第 3 引数は検索対照となる文字列の末尾がどこかを指定します。startswith() では末尾の指定はよくわからないので endswith() を使ってみます。以下の例を見てください。


str1 = 'abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz'
str1.endswith('wxy', 0, 52)
>> True
str1.endswith('wxy', 0, -1)
>> True

最初の例は検索対象となる文字列に対する検索開始位置を 0、末尾を 52 と指定しています。末尾 52 が wxy となっているので True が返ります。また次の例では末尾を -1 と指定しているのでこの場合も wxy となり True が返ります。

末尾を指定する場合は必ず開始位置を指定する必要があります。これは startswith(), endswith() 共通ですので注意してください。

今回は startswith(), endswith() メソッドについてまとめてみました。

では、ごきげんよう。



この記事が気に入ったらサポートをしてみませんか?