[Python] 정규식을 사용하지 않고 문자열 내 특수문자를 제거하기

Python의 기본 메서드 중 하나인 문자열.isalnum() 메서드를 이용하면
문자열 내 특수문자 사용 여부를 알 수 있습니다.
"is alphabet or number"라는 그 이름에서 유추할 수 있듯이
.isalnum() 메서드는 문자열 내 모든 문자가 문자 또는 숫자인 경우에는 True,
그렇지 않은 경우에는 False를 반환합니다.
아래와 같은 문자열이 있다고 가정하죠 ^^
[code]
sample = '1234567890 abcdefghABCDEFGH 가나다라마 !@#$%^&*()_{}[]<>'
[/code]
Python에서는 문자열도 iterable한 개체로 취급하는 관계로
for문(다른 언어의 foreach에 해당)에 바로 넣을 수 있기 떄문에
다음과 같은 방법으로 문자열 내 특수문자를 제거할 수 있습니다.
[code]
result = ''
for s in sample:
if s.isalnum():
result += s
[/code]
=> 실행결과 : 1234567890abcdefghABCDEFGH가나다라마
List comprehension을 사용하면 위 네 줄의 스크립트를 다음과 같이 한 줄로 줄일 수 있습니다!
[code]
result = ''.join([s for s in sample if s.isalnum()])
[/code]
댓글 2개
크롤링 하면 파이썬이라는 말이 나온 것도 이유가 있었군요.
js 에서도 굳이 정규식 패턴을 만들지 않더라도 이런 유형의 메소드가 많았으면 좋겠습니다.
Django나 Flask 덕분이기도 하지만 강력한 웹 크롤링 기능에 힘입은 것 같습니다.
문자열 처리 방면으로는 Perl이 정말 잘 만들어진 언어라는 생각이 드는데
이제는 완연히 사양길로 접어들어서 아쉽네요 ㅠㅠ
그럼 날씨가 살짝 선선해졌는데 편안한 저녁 되세요~! ^-^