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

파이썬에서 문자열이 특정 문자만 포함하고 있는지 확인하는 방법

파이썬에서 문자열이 허용된 특정 문자들로만 구성되어 있는지 확인하려면 집합(Set)을 활용하는 방법이 가장 간단합니다. 먼저 허용할 문자들로 집합을 선언한 뒤, 검사하려는 문자열의 집합이 그 하위 집합인지 확인하면 됩니다.

예를 들어, 문자열이 오직 1, 2, 3, 4만 포함하는지 검사하는 코드는 다음과 같습니다.

예제 1: 집합(Set) 사용하기

allowed_chars = set('1234')
validation_string = '121'

if set(validation_string).issubset(allowed_chars):
    print(True)
else:
    print(False)

출력 결과

True

'121'은 모두 1과 2로만 이루어져 있으므로 허용된 문자 집합의 부분집합에 해당해 True가 출력됩니다. 만약 문자열에 허용되지 않은 문자가 하나라도 포함되어 있다면 False가 반환됩니다.

예제 2: 정규표현식(Regex) 사용하기

같은 결과를 정규표현식으로도 얻을 수 있습니다. 숫자 1, 2, 3, 4만 매칭하려면 re.match() 함수에 정규식 패턴 "^[1234]+$"를 사용합니다.

import re

print(bool(re.match('^[1234]+$', '123abc')))
print(bool(re.match('^[1234]+$', '123')))

출력 결과

False
True

주의사항

정규표현식에는 몇 가지 유의할 점이 있습니다.

1. 특수 문자 이스케이프: 점(.), 별표(*), 괄호 등 일부 문자는 정규식에서 특별한 의미를 가지므로, 리터럴 문자로 매칭하려면 백슬래시(\)로 이스케이프 처리해야 합니다.

2. bool() 변환 필요: re.match()는 매칭 성공 시 match 객체를, 실패 시 None을 반환합니다. 따라서 단순히 참/거짓 여부만 확인하려면 위 예제처럼 bool()로 감싸 명시적으로 불리언 값으로 변환하는 것이 좋습니다.

두 방법 중 어떤 것을 선택할지는 상황에 따라 다릅니다. 허용 문자가 고정적이고 간단하다면 집합 방식이 더 직관적이고 빠르며, 패턴이 복잡하거나 범위 기반 조건(예: 영문자와 숫자만 허용)이 필요하다면 정규표현식이 더 유연하게 대응할 수 있습니다.