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

파이썬으로 문자열에 특수 문자가 포함되어 있는지 확인하는 프로그램 작성하기

이 튜토리얼에서는 파이썬(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

이렇게 함수로 만들어 두면 여러 문자열을 검사할 때 훨씬 효율적입니다. 제너레이터 표현식을 함께 사용하면 불필요한 리스트 생성을 줄여 메모리 효율까지 개선할 수 있습니다.