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 인걸까