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

Python에서 문자열이 특정 접두사(하위 문자열)로 시작하는지 확인하는 방법

Python에서 문자열이 특정 하위 문자열로 시작하는지 확인하기

Python에서 어떤 문자열이 특정 접두사(prefix)로 시작하는지 확인해야 하는 경우가 자주 있습니다. 예를 들어, 파일 이름이 특정 확장자로 시작하는지 검사하거나, 사용자 입력이 예상된 형식과 일치하는지 확인할 때 유용합니다. 이를 구현하는 대표적인 방법은 두 가지가 있습니다.

1. startswith() 메서드 사용

가장 간단하고 권장되는 방법은 문자열 클래스(String class)에 내장된 startswith() 메서드를 사용하는 것입니다. 이 메서드는 찾고자 하는 접두사 문자열을 인수로 받으며, 해당 문자열 객체에서 직접 호출할 수 있습니다. 결과는 불리언(Boolean) 값인 True 또는 False로 반환됩니다.

>>> 'hello world'.startswith('hell')
True
>>> "Harry Potter".startswith("Harr")
True
>>> 'hello world'.startswith('nope')
False

위 예제에서 볼 수 있듯이, 'hello world' 문자열은 'hell'로 시작하므로 True를 반환하고, 'nope'로 시작하지 않으므로 False를 반환합니다. 또한 startswith() 메서드는 시작 위치와 끝 위치를 선택적으로 지정할 수 있어, 문자열의 일부 구간만 검사하는 것도 가능합니다.

2. 정규 표현식(re 모듈) 사용

또 다른 방법은 re 모듈의 정규 표현식(regular expression)을 활용하는 것입니다. 정규 표현식에서 ^ 기호는 줄의 시작을 의미하므로, 이를 활용하면 문자열이 주어진 접두사로 시작하는지 검사할 수 있습니다. re.search() 함수는 매치 객체를 반환하므로, 명시적인 True/False 값을 얻기 위해 bool()로 감싸주는 것이 좋습니다.

>>> import re
>>> bool(re.search('^hell', 'hello world'))
True
>>> bool(re.search('^Harr', 'Harry Potter'))
True
>>> bool(re.search('^nope', 'hello world'))
False

어떤 방법을 사용해야 할까?

일반적으로 단순히 접두사 여부만 확인한다면 startswith() 메서드를 사용하는 것이 좋습니다. 코드가 더 읽기 쉽고, 정규 표현식 컴파일 오버헤드 없이 빠르게 동작하기 때문입니다. 반면, 대소문자 무시, 복잡한 패턴 매칭 등 추가적인 조건이 필요하다면 정규 표현식이 더 적합할 수 있습니다.