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

Python에서 특정 문자열·접미사가 목록의 문자열과 일치하는지 확인하는 방법


데이터를 처리하다 보면 특정 단어나 문자열이 주어진 목록에 존재하는지 확인해야 하는 경우가 매우 자주 발생합니다. 이러한 확인 작업은 이후 비즈니스 로직을 처리하는 데 중요한 기초가 되며, 데이터 필터링이나 분류 작업의 전 단계로 활용됩니다. 이 글에서는 여러 개의 문자열로 이루어진 목록 안에 특정 문자열(예: 접미사)이 존재하는지 확인하는 다양한 방법을 예제와 함께 살펴보겠습니다.

any() 함수 사용하기

Python의 any() 함수는 반복 가능한 객체(iterable)의 요소 중 하나라도 조건을 만족하면 True를 반환하고, 하나도 만족하지 않으면 False를 반환합니다. 아래 예제에서는 조건문(if)과 함께 any() 함수를 사용하여 주어진 문자열이 목록에 포함되어 있는지 여부를 판별합니다.

예제

# 주어진 리스트
lstA = ["Tue", "Fri", "Sun"]

# 확인할 문자열
str = 'Sun'

# any 함수 사용
if any(str in i for i in lstA):
    print(f"{str}은(는) 주어진 리스트에 존재합니다.")
else:
    print(f"{str}은(는) 주어진 리스트에 없습니다.")

실행 결과

Sun은(는) 주어진 리스트에 존재합니다.

filter() 함수 사용하기

filter() 함수는 지정된 함수를 통해 각 요소를 검사한 뒤, 조건을 통과한 요소들로 구성된 반복자(iterator)를 반환합니다. 아래 예제에서는 filter()의 결과를 리스트로 변환한 후 그 길이를 확인합니다. 길이가 0보다 크면 해당 문자열이 목록에 존재하는 것이고, 그렇지 않으면 존재하지 않는 것으로 판단합니다.

예제

# 주어진 리스트
lstA = ["Tue", "Fri", "Sun"]

# 확인할 문자열
str = 'Wed'

# filter 함수 사용
if len(list(filter(lambda x: str in x, lstA))) != 0:
    print(f"{str}은(는) 주어진 리스트에 존재합니다.")
else:
    print(f"{str}은(는) 주어진 리스트에 없습니다.")

실행 결과

Wed은(는) 주어진 리스트에 없습니다.

참고: 실제 접미사 일치 여부를 확인할 때

위의 두 예제는 문자열이 목록의 요소에 부분 문자열(substring)로 포함되어 있는지를 확인하는 방식입니다. 만약 목록의 문자열이 특정 접미사로 끝나는지 정확하게 확인하고 싶다면 endswith() 메서드를 사용하는 것이 더 명확하고 안전합니다.

# 주어진 리스트
lstA = ["Tue", "Fri", "Sun"]

# 확인할 접미사
suffix = 'un'

# endswith로 접미사 일치 항목 찾기
result = [s for s in lstA if s.endswith(suffix)]
print(result)

실행 결과

['Sun']

마무리

간단한 존재 여부만 확인한다면 가독성이 좋은 any() 방식이 적합하고, 조건을 만족하는 요소들을 직접 추출해야 한다면 filter()나 리스트 컴프리헨션이 유용합니다. 또한 접미사처럼 문자열의 위치까지 정확히 검사해야 할 때는 endswith()(또는 접두사의 경우 startswith())를 사용하는 것이 바람직합니다. 상황에 맞는 방법을 선택하면 코드의 의도가 분명해지고 유지보수도 쉬워집니다.