이 튜토리얼에서는 파이썬(Python)을 사용해 문자열 안에 특수 문자가 포함되어 있는지 확인하는 프로그램을 작성해 보겠습니다. 파이썬에서는 아주 간단하게 구현할 수 있습니다.
파이썬의 string 모듈에는 특수 문자들이 미리 정의되어 있어, 이를 활용하면 손쉽게 검사를 수행할 수 있습니다. 그럼 프로그램을 작성하는 단계를 하나씩 살펴보겠습니다.
구현 단계
string 모듈을 임포트합니다.
string.punctuation에 정의된 특수 문자들을 변수에 저장합니다.
검사할 문자열을 초기화합니다.
map() 함수를 사용해 문자열에 특수 문자가 있는지 확인합니다.
결과가 유효한지 여부를 출력합니다.
예제 코드
# string 모듈 임포트
import string
# 특수 문자 정의
special_chars = string.punctuation
# 문자열 초기화
string_1 = "Tutori@lspoinT!"
string_2 = "Tutorialspoint"
# string_1에 특수 문자가 있는지 확인
bools = list(map(lambda char: char in special_chars, string_1))
print("Valid") if any(bools) else print("Invalid")
# string_2에 특수 문자가 있는지 확인
bools = list(map(lambda char: char in special_chars, string_2))
print("Valid") if any(bools) else print("Invalid")실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Valid Invalid
동작 원리 이해하기
이 코드는 map() 함수와 람다(lambda) 함수를 활용해 문자열의 각 문자를 순회하면서 해당 문자가 string.punctuation 집합에 속하는지 검사합니다. 그 결과로 불리언(Boolean) 값들의 리스트가 생성되며, any() 함수는 리스트에 하나라도 True가 존재하는지 확인합니다.
즉, 특수 문자가 하나라도 발견되면 "Valid"가 출력되고, 일반 알파벳만 포함된 문자열이라면 "Invalid"가 출력됩니다.
마무리
위 코드는 반복문 없이도 간결하게 문제를 해결하지만, 코드 중복을 피하고 재사용성을 높이려면 검사 로직을 별도의 함수로 분리하는 것이 좋습니다.
def has_special_chars(text):
return any(char in string.punctuation for char in text)
print(has_special_chars("Tutori@lspoinT!")) # True
print(has_special_chars("Tutorialspoint")) # False이렇게 함수로 만들어 두면 여러 문자열을 검사할 때 훨씬 효율적입니다. 제너레이터 표현식을 함께 사용하면 불필요한 리스트 생성을 줄여 메모리 효율까지 개선할 수 있습니다.