Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
文字列.startswith() / 文字列.endswith() / in
文字列が特定の文字列で始まるか・終わるかを確認するメソッドです。ファイル拡張子の確認やURLの判定によく使われます。
構文
# 文字列が指定したプレフィックスで始まるか確認します(True / False)。 文字列.startswith(プレフィックス, 開始=0, 終了=len(文字列)) # 文字列が指定したサフィックスで終わるか確認します(True / False)。 文字列.endswith(サフィックス, 開始=0, 終了=len(文字列)) # in 演算子で文字列が部分文字列を含むか確認します。 部分文字列 in 文字列 部分文字列 not in 文字列
関数一覧
| メソッド・演算子 | 概要 |
|---|---|
| str.startswith(prefix, start, end) | 文字列がプレフィックスで始まる場合 True を返します。タプルを渡すと複数のプレフィックスをまとめて確認できます。 |
| str.endswith(suffix, start, end) | 文字列がサフィックスで終わる場合 True を返します。タプルを渡すと複数のサフィックスをまとめて確認できます。 |
| sub in str | 文字列に部分文字列が含まれる場合 True を返します。大文字・小文字は区別されます。 |
| sub not in str | 文字列に部分文字列が含まれない場合 True を返します。 |
サンプルコード
# startswith() でプロトコルを確認します。
url = "https://example.com/page"
print(url.startswith("https://")) # True
print(url.startswith("http://")) # False
# endswith() でファイルの拡張子を確認します。
filename = "report_2026.csv"
print(filename.endswith(".csv")) # True
print(filename.endswith(".xlsx")) # False
# タプルを渡して複数の条件をまとめて確認します。
# 「or」でつなぐより簡潔に書けます。
image_extensions = (".jpg", ".jpeg", ".png", ".gif", ".webp")
files = ["photo.jpg", "document.pdf", "icon.png", "data.csv"]
image_files = [f for f in files if f.endswith(image_extensions)]
print(image_files) # ['photo.jpg', 'icon.png']
# タプルを使った startswith() の例です。
urls = ["https://secure.com", "http://old.com", "ftp://files.com"]
secure = [u for u in urls if u.startswith(("https://", "ftps://"))]
print(secure) # ['https://secure.com']
# 検索範囲を指定します。
text = "Pythonは楽しい"
print(text.startswith("楽", 7)) # True(インデックス7から確認)
print(text.endswith("楽", 0, 9)) # True(インデックス0〜8の範囲で確認)
# in 演算子で部分文字列の包含確認をします。
sentence = "Pythonはデータサイエンスに強いです。"
print("データサイエンス" in sentence) # True
print("機械学習" in sentence) # False
print("機械学習" not in sentence) # True
# 大文字・小文字を区別する点に注意が必要です。
print("python" in "Python is great") # False(大文字小文字が異なります)
print("Python" in "Python is great") # True
# 大文字・小文字を無視して確認する方法です。
text2 = "Hello, World!"
print("world" in text2.lower()) # True(lower() で統一してから確認します)
# 拡張子に応じてファイルを分類する実用例です。
all_files = [
"index.html", "style.css", "main.js",
"logo.png", "data.json", "script.py"
]
categories = {
"web": (".html", ".css", ".js"),
"image": (".png", ".jpg", ".gif"),
"data": (".json", ".csv", ".xml"),
"python": (".py",),
}
for filename in all_files:
for cat, exts in categories.items():
if filename.endswith(exts):
print(f"{filename} → {cat}")
概要
『startswith()』と『endswith()』は引数にタプルを渡して複数のパターンをまとめて確認できます。リストを直接渡すことはできません。複数のパターンを渡す場合は必ずタプル(括弧でくくる、またはカンマで区切る)を使ってください。
『in』演算子は大文字・小文字を区別するため、大文字・小文字を無視して確認したい場合は『lower()』または『upper()』で統一してから使ってください。正規表現を使ったより複雑なパターンマッチングには標準ライブラリの『re』モジュールが便利です。
Python 3.9以降では、プレフィックスやサフィックスを除去する『removeprefix()』と『removesuffix()』メソッドが追加されました。存在確認と除去をセットで行う場合に便利です。文字列の検索位置が必要な場合は『str.find()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。