startswith 메서드란?
Python에서 str.startswith()은 주어진 문자열이 특정 접두사(prefix)로 시작하는지 여부를 판단하는 내장 문자열 메서드입니다. 이 메서드는 조건 검사, 데이터 필터링, 입력 유효성 검증 등 다양한 시나리오에서 유용하게 사용됩니다.
기본 구문
문자열.startswith(접두사[, 시작_인덱스[, 종료_인덱스]])
- 접두사: 반드시 필요하며, 하나의 문자열 또는 여러 문자열을 포함한 튜플 형태일 수 있습니다.
- 시작_인덱스: 선택 항목으로, 검사를 시작할 위치를 지정합니다 (기본값: 0).
- 종료_인덱스: 선택 항목으로, 검사를 종료할 위치를 지정합니다 (기본값: 문자열 끝).
결과로는 조건에 맞으면 True, 아니면 False를 반환합니다.
실제 사용 예시
1. 기본 문자열 비교
message = "Welcome to Python programming"
result = message.startswith("Welcome")
print(result) # 출력: True
result = message.startswith("Python")
print(result) # 출력: False
2. 특정 인덱스 범위 내에서 검사
data = "Programming is fun"
# 인덱스 14부터 시작하여 'fun'으로 시작하는지 확인
print(data.startswith("fun", 14)) # 출력: True
# 인덱스 5부터 12 사이가 'ram'으로 시작하는지 확인
print(data.startswith("ram", 5, 12)) # 출력: True
3. 여러 접두사 중 하나라도 일치하는지 확인
튜플을 사용하면 여러 후보 접두사를 동시에 평가할 수 있습니다.
filename = "script.py"
if filename.startswith(("main", "app", "script")):
print("지원되는 스크립트 파일 형식입니다.") # 출력됨
url = "ftp://files.example.com"
if url.startswith(("http://", "https://", "ftp://")):
print("유효한 프로토콜을 사용 중입니다.") # 출력됨
4. 대소문자 구분 없이 비교
대소문자를 무시하려면 사전에 lower() 또는 upper()를 적용합니다.
input_text = "HELLO World"
print(input_text.lower().startswith("hello")) # 출력: True
주요 응용 분야
파일 형식 필터링
file_list = ["data.csv", "image.png", "notes.txt", "backup.csv"]
csv_files = [f for f in file_list if f.startswith("data")]
print(csv_files) # ['data.csv']
로그 레벨 식별
log_entry = "[ERROR] Database connection failed"
if log_entry.startswith(("[INFO]", "[WARNING]", "[ERROR]")):
print("시스템 로그 감지됨")
웹 주소 패턴 검증
link = "https://dev.example.org"
if link.startswith(("http://", "https://")):
print("웹 접근 가능한 링크입니다.")
주의사항 및 팁
- 접두사로 튜플을 전달할 경우, 첫 번째 일치 항목에서 즉시
True를 반환하며 나머지는 평가하지 않습니다. - 지정한 시작 또는 종료 인덱스가 문자열 길이를 초과해도 예외가 발생하지 않고 안전하게
False를 반환합니다. - 빈 문자열 접두사
""는 항상True를 반환합니다 — 모든 문자열은 빈 문자열로 "시작"한다고 간주되기 때문입니다.