파이썬

파이썬 크롤링, re로 특정 정보 선택하기(간단한 정규표현식)

지각생 2022. 8. 12. 18:50
728x90

re란?

re는 파이썬 기본 라이브러리로 별도 설치가 필요 없다.

re를 사용하면 특정 규칙을 가지고 있는 형태의 정보만 선택해서 가져올 수 있다.

 

 

re 예제

re를 import한 다음  아래와 같이 쓰면 된다.

  • re.findall( 정규표현을 활용한 규칙, 값이 담긴 변수명 ) 
  • .+?는 하나 이상의 글자를 의미하며, (.+?)는 해당 위치에 있는 값을 선택하는 것이다.
  • ( )안에 들어가는 것이 내가 추출하고자 하는 정보를 뜻한다. 한번에 여러개의 가로를 쓸수 있음. 
  • ( )에 담긴 정보는 배열의 형태로 반환된다. 
  • re의 findall 메소드를 사용하면 반환 값이 하나여도 배열을 반환한다. 그렇기 때문에 일반적으로 2차원 배열이 반환 된다. 그래서 그 안의 정보를 가져오기 위해서는 배열변수명[ 1차 인덱스 ][ 2차 인덱스 ]으로 접근해야 한다.
  • 그리고! ( )로 반환 된 값은 튜플로 반환된다. 튜플을 변경이 불가능 하기 때문에 읽기만 가능하고 수정 불가능하다.
import re

a='''{name:'홍길동',age:20}'''

info=re.findall("{name:'(.+)',age:(.+)}",a)
print(info)

print("이름:",info[0][0])
print("나이:",info[0][1])

(결과값)

 

 

ㅇ re 예제 2

import re
data='''<member><name>홍길동</name><age>20</age></member><member><name>박자바</name><age>25</age></member><name>파이썬</name><name>노드</name>'''

list_name=re.findall('<name>(.+?)</name>',data)
print(len(list_name))
print(list_name)

list_member_name=re.findall('<member><name>(.+?)</name>.+?</member>',data)
print(len(list_member_name))
print(list_member_name)

(결과값)

 

출처:

https://developsd.tistory.com/57

728x90