Python: 文字列の先頭と末尾を調べる startswidth・endswith

Pythonで文字列の先頭や末尾が指定する文字列と一致するかどうかを 調べる場合、startswithメソッドとendswithメソッドを使います。

startswith()は指定した文字列が先頭にあるかどうか、 endswith()は末尾にあるかどうかを調べ、 結果をTrue/Falseで返します。
どちらもwithの前に「s」が付くのを忘れやすいので注意してください。 「startwith・endwith」ではなく、 「startswith・endswith」です。 書式は次の通りです。

書式
文字列.startswith(先頭文字列)

文字列.endswith(末尾文字列)

startswithとendswithを使ったサンプルコードです。 メールアドレスが入った文字列を基に、 ユーザー名やトップレベルドメインが指定した文字列と一致するかどうかを 確認しています。 一致する場合はTrue、一致しない場合はFalseが戻ります。

s = "info@sample.com"

# starstwith
print(s.startswith("info"))  # True

print(s.startswith("user"))  # False

# endswith
print(s.endswith(".com"))  # True

print(s.endswith(".net"))  # False

引数にタプルも指定できる

startswithとendswithの引数にタプルを指定することもできます。 その場合、タプルで指定した複数の文字列のいずれかと一致するとTrue、 いずれも一致しなければFalseが戻ります。

書式
文字列.startswith((先頭文字列1, 先頭文字列2, ...))

文字列.startswith((末尾文字列1, 末尾文字列2, ...))

次のコードは引数にタプルを指定した例です。 先程と同じように、 メールアドレスのユーザー名やトップレベルドメインの一致を確認しています。

s = "info@sample.com"

# startswith
print(s.startswith(("info", "user")))  # True
print(s.startswith(("admin", "user"))) # False

# endswith
print(s.endswith((".com", ".net")))  # True
print(s.endswith((".jp", ".net")))   # False

検索の開始位置を指定する

文字列の開始位置を指定することもできます。 その場合、第2引数に指定します。 あまり使う機会はないと思いますが、一応できます。

書式
文字列.startswith(先頭文字列, 開始位置)

文字列.endswith(末尾文字列, 開始位置)

endswithの開始位置は、末尾から数えるのではなく あくまで先頭からの開始位置なので注意してください。

第2引数に開始位置を指定するサンプルコードは次の通りです。

s = "abcdxyz"

# startswith
print(s.startswith("bcd", 1))  # True
print(s.startswith("bcd", 2))  # False

# endswith
print(s.endswith("xyz", 1))  # True
print(s.endswith("xyz", 5))  # False
Python