겉바속촉

[PYTHON] 파이썬_정규식 & re 활용 본문

IT 일기 (상반기)/PYTHON

[PYTHON] 파이썬_정규식 & re 활용

겉바속촉 2021. 1. 6. 14:20
728x90
반응형

 

 

안녕하세요

겉바속촉입니다

!^^!

 

 

!!파이썬 시작하기!!

 

 

 

 

 

 


 

 

 

 

정규식

 

 

정규 표현식을 이용한 데이터 추출

 

 

파이썬 쉘에서 작업을 해보겠습니다

 

import re 를 주고나서 text 에 내용을 넣었습니다

 

 

 

그리고 re.findall(찾고 싶은 문자열의 범위 지정) 을 result에 넣습니다

출력!!

 

 

 

 

 

아니면 다음 사이트에서 연습해봐도 좋습니다

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

 

그럼 해당되는 곳에 블럭 처리가 되는거에요:)

 

 

그럼 저 괄호 안이 의미하는 것이 도대체 무엇인가!!!

하나하나 분해해서 분석해보도록 하겠습니다

 

 

\([A-Za-z가-힣]+, \d+\)

 

  • \( 와 \) ⇒ 이스케이프. () 정규식에 의미문자이므로
  • [A-Za-z가-힣] ⇒ [] 안에 있는 문자 중 하나가 나올 수 있다
  • A-Z ⇒ 대문자 
  • a-z ⇒ 소문자
  • 가-힣 ⇒ 한글
  • + ⇒ 1번 이상 반복
  • [A-Za-z가-힣]+ ⇒ 영문 또는 한글로 된 단어가 올 수 있다.
  • \d ⇒ 숫자. [0-9]와 같은 의미
  • \d+ ⇒ 한자리 이상의 숫자

 

 

\([A-Za-z가-힣]+, \d+\)   분석해보기

 

  • 소괄호로 시작하고
  • 영문자나 한글로 된 문자가 한 글자 이상 나오고
  • 콤마 나오고
  • 한 칸 띄우고
  • 숫자가 한 글자 이상 나오고
  • 소괄호로 닫는것들을


    찾아라!!라는 뜻입니다.

 

 

***********참고**************************************************************************************************************

 

  • \d ⇒ 숫자. [0-9]
  • \D ⇒ 숫자가 아닌 것. [^0-9]
  • \s ⇒ white space. [\t\n\r\f\v]와 동일

 

  기능 아스키코드
\t 09
\n 줄바꿈(LF) 0A
\r 캐리지리턴(CR) 0D
\f 폼피드 0C
\v 수직 탭 0B
     
\s 화이트 스페이스 [\t\n\r\f\v]
\S 화이트 스페이스가 아닌 것 [^ \t\n\r\f\v]
     
\w 문자 + 숫자 [a-zA-Z0-9]
\W 문자 + 숫자가 아닌 문자 [^a-zA-Z0-9]
     
\\ 역슬래쉬(\)  
\( 소괄호 열기( ( )  
\) 소괄호 닫기( ) )  
     
* 앞의 표현식이 0회 이상
연속으로 반복되는 부분과 대응
{0,}
+ 앞에 표현식이 1회 이상 연속으로
반복되는부분과 대응
{1,}
? 앞의 표현식이
0 또는 1회 등장하는 부분과 대응
{0,1}
.

개행문자를 제외한 모든 단일문자와 대응

 
 

 

 
()

그룹핑

(a,b) = ab, abab, abababab
{n} 또는 {n,m}

반복

(a,b){2,3} = abab, ababab, ab

 

******************************************************************************************************************************

 

 

 

 

1.   re.match(pattern, string, flags=0)    : 문자열 도입에서 패턴 찾기

 

다음과 같이 설정

string을 human life라고 해서

pattern을 string에서 찾을 수 있는 지 보는 것 --> 그래서 그것을 보고싶으면 group() 붙여주기

==> 하지만 찾아내지 못하고 에러 도출

==> 문자열 도입부분에서만 찾기 때문

 

 

그럼 이번에는 string을 life of human 이라고 주기

==> life를 잘 찾아냅니다.

 

 

 

 

 

2.   re.search(pattern, string, flags=0) : 문자열 전체에서 패턴 찾기

 

다음과 같이 설정

string을 human life라고 해서

pattern을 string에서 찾을 수 있는 지 보는 것 --> 그래서 그것을 보고싶으면 group() 붙여주기

==> match와 다르게 life를 잘 찾아냅니다.

 

 

 

string을 life of human 이라고 해주어도

pattern을 string에서 잘 찾을 수 있겠죠?~

 

 

 

 

 

 

 

3.   re.findall(pattern, string, flags=0) : 패턴을 모두 찾아 리스트로 반환

 

 

다음과 같이 설정

 

re.findall 로 패턴을 지정해서 members에서 패턴에 부합한 것을 찾아

리스트로 반환해줘!! 라는 명령

==> 반환타입이 list 라서 뒤에 group()을 붙이지 않아도 무방

 

 

 

 

 

 

4.   re.sub(pattern, repl, string, count=0, flags=0) : 문자열 바꾸기

 

다음 글을 이제 바꿔보도록 할게요

By learning to interpret dog body language and mimic the pack behaviors your dog craves, you can say 'I love you' to your dog in the following ways. \n\nWe all know that a loved dog equals a happy dog, and dog love equals pure love (just check out the videoevidence!)

 

우선 sentence에 넣어줄게요

그리고 출력하면 본문에 개행문자가 포함되어 있어서

불필요한 개행(줄바꿈)이 실행되어 다음과 같이 나옵니다

 

이번에는 sentence에다가 re.sub를 활용해서 다시 출력해볼게요

\n (줄바꿈) 을  ----->  '  '  (공백) 으로 바꾸겠다는 거에요

==> 위의 결과랑 비교해보면 줄바꿈 대신 띄어쓰기가 발생한 것 알 수 있쥬?

 

 

 

 

 

728x90
반응형