replace함수를 통해 원하지 않는 character를 지워줄 수 있다. 하지만, replace함수의 단점은 뭘 제거해야 하는지 하나 하나 알아야 한다는 단점이 있다. 정규표현식을 사용해서, 원하지 않는 character를 지워줄 수 있다.
re.sub('[^\s\d\w]','',text)
sub = substitute(대체하다)
^ = 부정의 의미가 있다.
\s = 공백을 의미(space).
\d = 숫자를 의미(digit).
\w = 문자를 의미(word).
=> ^\s\d\w는 공백도 아니고 숫자도 아니고 문자도 아닌 character를 의미.
첫번째 인자: 대체하고자 하는(없애고자 하는) 문자열 값의 패턴. (여기서는 기호를 의미)
두번째 인자: 새롭게 넣고자 하는 문자열 값의 패턴.
세번째 인자: 대체 작업을 하고자 하는 텍스트 데이터의 변수명
=> 첫번째 인자에 해당하는 character를 두번째 인자에 해당하는 character로 전부 교체한다.
p = re.compile('[ a-z]+') #패턴을 미리 compile해둠.
p_m = p.match('python') #compile한 패턴을 통해, 문자를 탐색.
re.match('[ a-z]+', 'python') #complie 없이, 바로 패턴을 통해 문자를 탐색.
https://stackoverflow.com/questions/452104/is-it-worth-using-pythons-re-compile
https://buyandpray.tistory.com/49
https://doorbw.tistory.com/127
re.compile('\\\\section') == re.compile(r'\\section')
re.compile(r'(\d+)') == re.compile('(\\d+)')
=> Raw string을 활용하면, 코드가 간결해짐.
=> 백슬래시()가 필요치 않은 pattern이면, r의 유무에 상관없이 동일한 정규표현식이 됨.
https://docs.python.org/3/library/re.html#raw-string-notation
https://wikidocs.net/4308
https://koreapy.tistory.com/1401
정의한 pattern에 주어진 string이 처음부터 시작하여 일치하는지 확인.
re.match 타입의 데이터를 str로 변환하는 법.
https://stackoverflow.com/questions/18493677/how-do-i-return-a-string-from-a-regex-match-in-python
https://docs.python.org/3/library/re.html
p = re.compile('[^ 가-힣]+') # 가-힣, 띄어쓰기가 아닌 문자 패턴(p)에 저장.
only_hangul = p.sub('', content) # content에서 패턴(p)에 해당하지 않는 것은 삭제.