public bigdata

파이썬을 이용한 웹 스크래핑(edwith 강의) chapter 1 정규식-3 본문

Python programming/웹 크롤링

파이썬을 이용한 웹 스크래핑(edwith 강의) chapter 1 정규식-3

public bigdata 2019. 11. 24. 23:58

Pythonlearn-11-Regex.pptx(정규표현식).pdf
0.36MB

#########3강########
# 이메일 호스트 추출1(기본 방법)
data = 'From stephen.marquard@uct.ac.za Sat Jan'
st = data.find("@")
ed = data.find(' ',st)
host = data[st+1:ed]
print(host)
# 이메일 호스트 추출2(split 메서드 이용)
data = 'From stephen.marquard@uct.ac.za Sat Jan'
words = data.split(' ') # 공백 기준 나누기
email = words[1]
pieces = email.split('@')
print(pieces[1])
# 이메일 호스트 추출2(정규식 이용)
# 이번엔 정규식을 사용한 방법입니다. 
# 여기에서 '^ '는 공백문자가 아닌 문자를 의미하며
# '^'가 중간에 들어갈 경우 뒤에 오는 문자를 제외한 패턴을 의미합니다.
import re
data = 'From stephen.marquard@uct.ac.za Sat Jan'
y = re.findall('@([^ ]*)', data) # 공백 제외한 단 하나의 문자가 *(하나 이상)
y                                # ()을 사용한 이유는 @가 매칭에는 필요하지만
                                 # 결과로 가져오지 않을 것이기 때문\

# 여기서 조금 더 정교하게 하면
import re
data = 'From stephen.marquard@uct.ac.za Sat Jan'
y = re.findall('^From.*@([^ ]*)', data)
y

## 종합예제 : 패턴 추출 및 최댓값 찾기
import re
hand = open('C:/Users/senior201701/새 폴더/2. 분석/5. 파이썬 크롤링(edwith)/mbox-short.txt')
numlist = list()
for line in hand:
    line = line.strip()
    stuff = re.findall('^X-DSPAM-Confidence: ([0-9.]+)', line) # '([0-9.]+)' : 0-9 까지의 값 또는 . 매칭이 1개 이상 되는 경우 
    if len(stuff) != 1 :  continue
    num = float(stuff[0])
    numlist.append(num)
print('Maximum:', max(numlist))

# 예외 문자(Escape Character)
import re
x = 'We just received $10.00 for cookies.'
y = re.findall('\$[0-9.]+',x) # "[0-9.]+" 이 부분은 
print(y)                      # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, . 을 매칭한다. 그리고 그 문자가 1번 이상 반복되는 경우 매칭
x = "$"                       # 즉. $만 온 경우 매칭 안된다.
y = "$1.0"
re.findall("\$[0-9.]+", x)
re.findall("\$[0-9.]*", x)
re.findall("\$([0-9.]+)", y)

사용된 TXT 파일

mbox-short.txt
0.09MB