Python - 문자열에서 특수문자 제거, 숫자 제거, 숫자만 남기기

파이썬에서 문자열의 특수문자만 제거하거나, 숫자만 제거, 또는 숫자만 남기고 다른 문자를 제거하는 방법을 소개합니다.

1. 문자열에서 특수문자 제거

re.sub(pattern, replacement, string)은 string에서 정규표현식의 pattern과 일치하는 내용을 replacement로 변경합니다. 만약 빈 문자열("")로 변경하면 패턴에 해당하는 문제만 제거하게 됩니다.

아래 예제는 문자열에서 특수문자만 제거합니다. 정확히는 한글, 영어, 숫자, 공백(스페이스)를 제외한 다른 문자를 모두 제거합니다.

예제에서 사용되는 정규표현식의 의미는 아래와 같습니다. 표현식 앞에 ^를 붙이면 not의 의미로, 그 정규표현식에 해당되지 않는 것을 찾습니다.

  • \uAC00-\uD7A30 : 모든 한글 음절(가-힣)
  • a-z : 영어 소문자
  • A-Z : 영어 대문자
  • 0-9 : 숫자
  • \s : 띄어쓰기
import re

str = "AA**BB#@$CC 가나다-123"

new_str = re.sub(r"[^\uAC00-\uD7A30-9a-zA-Z\s]", "", str)
print(new_str)

Output:

AABBCC 가나다123

2. 문자열에서 숫자만 남기기

숫자를 제외한 문자들을 패턴으로 만들면 [^0-9]가 됩니다. 0-9는 0에서 9사이의 숫자를 의미하고 ^는 not이므로, 숫자가 아닌 문자열을 찾는 패턴이 됩니다.

import re

string = "AA**BB#@$CC 가나다-123"

new_str = re.sub(r"[^0-9]", "", string)
print(new_str)

Output:

123

3. 문자열에서 숫자만 제거

[0-9] 패턴을 찾고 빈 문자열로 변경하면, 숫자만 제거하게 됩니다.

import re

string = "AA**BB#@$CC 가나다-123"

new_str = re.sub(r"[0-9]", "", string)
print(new_str)

Output:

AA**BB#@$CC 가나다-

4. 문자열에서 알파벳만 남기기

[^a-zA-Z] 패턴은 알파벳을 제외한 문자들입니다. 이 패턴에 해당하는 문자를 빈 문자열로 변환하면 알파벳만 남게 됩니다.

import re

string = "AA**BB#@$CC 가나다-123"

new_str = re.sub(r"[^a-zA-Z]", "", string)
print(new_str)

Output:

AABBCC
Loading script...
codechachaCopyright ©2019 codechacha