이 글에서는 파이썬 3.x(또는 그 이상 버전)에서 리스트 컴프리헨션(list comprehension)과 ord() 함수를 활용하여 문자열에서 알파벳 이외의 모든 문자를 제거하는 프로그램을 다룹니다.
알고리즘
1. 주어진 문자열을 순회하며 각 문자를 검사합니다. 2. 소문자 [a-z] 또는 대문자 [A-Z] 범위에 해당하는 문자만 선택합니다. 3. join() 함수를 사용하여 조건을 통과한 모든 문자를 하나로 합쳐 출력합니다.
예제 코드
def remchar(input):
# 대문자와 소문자 여부 검사
final = [ch for ch in input if
(ord(ch) in range(ord('a'), ord('z') + 1, 1)) or
(ord(ch) in range(ord('A'), ord('Z') + 1, 1))]
return ''.join(final)
# 실행 부분
if __name__ == "__main__":
input = "Tutorials@point786._/?"
print(remchar(input))실행 결과
Tutorialspoint
코드 설명
ord() 함수는 문자 하나를 인자로 받아 해당하는 ASCII 값을 반환합니다. 덕분에 각 문자가 알파벳 범위에 속하는지 빠르고 간단하게 비교할 수 있습니다.
동시에 리스트 컴프리헨션을 활용해 필요한 문자만 걸러낸 뒤, join() 함수로 하나의 문자열로 묶어 원하는 결과를 얻습니다. 위 예제에서는 숫자, 특수문자(@, ., _, /, ?)가 모두 제거되고 알파벳만 남는 것을 확인할 수 있습니다.
결론
이번 글에서는 파이썬의 리스트 컴프리헨션과 ord() 함수를 조합하여 문자열에서 알파벳 이외의 모든 문자를 효율적으로 제거하는 방법을 살펴보았습니다. 이 기법은 입력값 정제(data cleansing)나 유효성 검사 등 실무에서도 유용하게 활용할 수 있습니다.