Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python startswith()와 endswith() 완벽 가이드: 문자열 시작과 끝 확인하기

Python의 startswith() 함수는 문자열이 특정 부분 문자열로 시작하는지 확인하고, endswith() 함수는 문자열이 특정 부분 문자열로 끝나는지 확인합니다. 두 함수 모두 True 또는 False를 반환합니다.


문자열 인덱스 기본 개념 복습

startswith()endswith()를 본격적으로 살펴보기 전에, Python 문자열 인덱스의 기본 개념을 간단히 짚고 넘어가겠습니다.

문자열은 숫자, 공백, 알파벳, 기호 등으로 구성된 문자들의 연속입니다. 리스트와 마찬가지로 문자열의 특정 위치에 접근할 수 있습니다.

문자열의 모든 문자는 고유한 인덱스 값을 가지며, 인덱스는 해당 문자가 문자열 내에서 차지하는 위치를 의미합니다. 인덱스 번호는 0부터 시작합니다. 예를 들어, 문자열 Python Substrings의 인덱스는 다음과 같습니다.

Python(공백)Substrings
012345678910111213141516

문자열의 첫 번째 문자 P는 인덱스 0을, 마지막 문자 s는 인덱스 16을 가집니다. 각 문자가 자신만의 인덱스 번호를 가지기 때문에, 문자의 위치를 기준으로 문자열을 조작할 수 있습니다.

Python startswith() 사용법

startswith() 메서드는 문자열이 특정 부분 문자열로 시작하는지 확인합니다. 문자열이 지정한 부분 문자열로 시작하면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

Python startswith() 메서드의 기본 문법은 다음과 같습니다.

string_name.startswith(substring, start_pos, end_pos)

startswith() 메서드는 세 개의 매개변수를 받습니다.

  • substring: 큰 문자열 안에서 확인할 부분 문자열 (필수)
  • start_pos: 검색을 시작할 인덱스 위치 (선택)
  • end_pos: 검색을 종료할 인덱스 위치 (선택)

substring 매개변수는 대소문자를 구분합니다. 따라서 문자열에서 소문자 s를 찾으면 대문자 S는 무시됩니다. 대문자를 찾으려면 명시적으로 지정해야 합니다. 또한 Python의 인덱스는 0부터 시작한다는 점을 기억하세요. 이는 start_posend_pos 매개변수 사용에 영향을 줍니다.

startswith() 예제 1: 이름 첫 글자 확인하기

오락실 운영자라고 가정해 보겠습니다. 특별 프로모션으로 이름이 J로 시작하는 고객에게 1000 티켓당 200장의 추가 티켓을 제공합니다. 고객이 오락실 카드를 카운터에서 스캔하면 프로그램이 이름의 첫 글자를 확인합니다.

고객 이름의 첫 글자가 J인지 확인하는 코드는 다음과 같습니다.

customer_name = "John Milton"

print(customer_name.startswith("J"))

실행 결과: True

첫 번째 줄에서 고객 이름을 저장하는 변수 customer_name을 정의했습니다. 그다음 startswith()를 사용해 해당 변수가 J로 시작하는지 확인합니다. 고객 이름이 J로 시작하므로 프로그램은 True를 반환합니다.

start_posend_pos 인수를 지정하지 않으면, startswith()는 문자열의 시작 부분에서만 지정한 부분 문자열을 검색합니다.

startswith() 예제 2: 특정 범위에서 검색하기

이번에는 프로모션 조건을 변경해서, 이름의 두 번째 글자부터 다섯 번째 글자 사이에 s가 포함된 사람에게만 혜택을 주려고 합니다. 다음 코드로 확인할 수 있습니다.

customer_name = "John Milton"

print(customer_name.startswith("s", 1, 5))

실행 결과: False

이 코드에서는 start_posend_pos 매개변수를 각각 1과 5로 지정했습니다. 이는 startswith()에게 인덱스 1부터 5 사이(두 번째~여섯 번째 문자)에서만 s를 찾도록 지시합니다. "John" 구간에는 소문자 s가 없으므로 False가 반환됩니다.

Python endswith() 사용법

endswith() 메서드는 문자열이 특정 값으로 끝나는지 확인할 때 사용합니다. 동작 방식은 startswith()와 동일하지만, 문자열의 시작이 아닌 끝에서 부분 문자열을 검색한다는 점이 다릅니다.

endswith() 메서드의 기본 문법은 다음과 같습니다.

string_name.endswith(substring, start_pos, end_pos)

매개변수의 정의는 startswith() 메서드와 동일합니다.

endswith() 예제 1: 신용카드 뒷자리 확인하기

항공사를 운영하면서 고객의 신용카드로 환불을 처리해야 한다고 가정해 보겠습니다. 환불 처리를 위해서는 카드번호 뒤 네 자리를 확인하여 파일에 저장된 정보와 일치하는지 검증해야 합니다.

고객이 제공한 네 자리 숫자가 파일의 정보와 일치하는지 확인하는 endswith() 활용 예제입니다.

on_file_credit_card = '4242 4242 4242 4242'

matches = on_file_credit_card.endswith('4242')
print(matches)

실행 결과: True

고객이 제공한 숫자는 4242입니다. endswith() 메서드로 파일에 저장된 카드번호가 4242로 끝나는지 확인했고, 실제로 일치하므로 True를 반환했습니다.

endswith() 예제 2: 특정 범위 지정하기

선택적 인수인 start_posend_pos를 사용하면 특정 인덱스 범위에서 부분 문자열을 검색할 수 있습니다.

카페를 운영하며 고객의 주문 내역을 담은 문자열이 있다고 가정해 보겠습니다. 셰프는 주문에 Ham Sandwich가 포함되어 있는지 알고 싶어 하며, 문자열 길이는 24이고 마지막 다섯 글자는 ORDER라는 것을 알고 있습니다. 따라서 문자열 앞부분의 불필요한 영역을 건너뛰고 검색하려 합니다.

order = "ORDER Latte Ham Sandwich"

includes_ham_sandwich = order.endswith("Ham Sandwich", 0, 19)
print(includes_ham_sandwich)

실행 결과: True

이 예제에서는 substring 매개변수로 Ham Sandwich를 지정했습니다. 그다음 end_pos 매개변수를 사용하는 경우 start_pos를 비워둘 수 없기 때문에 start_pos를 0으로 지정했습니다. end_pos를 19로 지정한 이유는 문자열의 마지막 다섯 글자가 ORDER이고, 그 앞 문자는 공백이기 때문입니다.

검색 범위 내에서 문자열이 Ham Sandwich로 끝나므로 프로그램은 True를 반환합니다. 만약 해당 범위에서 Ham Sandwich로 끝나지 않는다면 False가 반환됩니다.

endswith()와 리스트 또는 튜플 함께 사용하기

endswith()는 substring 인수로 리스트(list)나 튜플(tuple)을 받을 수도 있습니다. 이를 활용하면 하나의 문자열이 여러 후보 값 중 하나로 끝나는지 한 번에 확인할 수 있습니다.

예를 들어, 파일 이름이 .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() 메서드의 사용법을 살펴보고, 각 메서드가 실제로 활용되는 여러 예제를 다루었습니다. 이제 여러분도 전문가처럼 startswith()endswith() 메서드를 활용해 문자열의 시작과 끝을 손쉽게 확인할 수 있습니다.