본문 바로가기
카테고리 없음

Python에서 문자, 숫자만 찾기 isalpha(), isalnum() +regex

by 이든Eden 2022. 2. 14.

leetcode를 오랜만에 보다가 팰린드롬이 아니냐 맞냐 하는 문제에서 alphanumeric(문자와 숫자)만 남기고 하라는 조건이 있었다.

기억이 나지 않는 regex를 검색해서 사용한 후 다풀고 나서 python에 아주 간단한 방법이 있다는 것을 알게되었다.

 

바로 isalnum()이라는 함수를 사용하는 것이었다.

 

isalnum() 

: 문자열이 영어 혹은 숫자로 되어있으면 True, 아니면 False를 리턴하는 함수

s = "A man, a plan, a canal: Panama"
newS= [i.lower() for i in s if i.isalnum()]
## newS 출력
['a', 'm', 'a', 'n', 'a', 'p', 'l', 'a', 'n', 'a', 'c', 'a', 'n', 'a', 'l', 'p', 'a', 'n', 'a', 'm', 'a']

s = "0P"
newS= [i.lower() for i in s if i.isalnum()]
## newS 출력
['0', 'p']

 

isalpha()

: 문자열이 영어로 되어 있으면 True, 아니면 False를 리턴하는 함수

s = "A man, a plan, a canal: Panama"
newS= [i.lower() for i in s if i.isalpha()]
## newS 출력
['a', 'm', 'a', 'n', 'a', 'p', 'l', 'a', 'n', 'a', 'c', 'a', 'n', 'a', 'l', 'p', 'a', 'n', 'a', 'm', 'a']

s = "0P"
newS= [i.lower() for i in s if i.isalpha()]
## newS 출력
['p']

 

내가 regex 검색해서 한 방법

s = "A man, a plan, a canal: Panama"
sentence = "".join(re.findall("[a-zA-Z0-9]", s))
sentence = sentence.lower()
## sentence 출력
'amanaplanacanalpanama'

 

regex를 잘 쓴다면 뭐든 상관없을 것 같고, 잘 못한다면 isalpha(), isalnum() 함수 쓰는게 좋을 것 같다.

 

진짜 Life is short, we need python 인걸까