티스토리 뷰
반응형
find 메소드와 슬라이싱을 통해 이메일 호스트를 추출할 수 있다.
data = 'From stephen.marquard@uct.ac.za Sat Jan 5:09:14:16 2020'
# 문자열에서 @ 이 위치한 포지션을 구한다.
atpos = data.find('@')
print(atpos)
# @ 이 위치한 곳 부터 처음 발견된 공백의 포지션을 구한다.
sppos = data.find(' ', atpos)
print(sppos)
# @ 다음문자부터 공백까지의 문자열 (이메일 호스트) 을 슬라이싱한다.
host = data[atpos+1 : sppos]
print(host)
split 메소드를 활용한 방법도 있다. 공백 문자를 기준으로 문자열을 나누고, 다시 @ 을 기준으로 문자열을 나눈다.
line = 'From stephen.marquard@uct.ac.za Sat Jan 5:09:14:16 2020'
words = line.split()
email = words[1]
pieces = email.split('@')
print(pieces[1])
정규식을 이용한 소스는 아래와 같다.
import re
lin = 'From stephen.marquard@uct.ac.za Sat Jan 5:09:14:16 2020'
y = re.findall('^From .*@([^ ]*)', lin)
print(y)
간단히 설명을 하자면
- From 으로 시작하는 라인을 찾는다.
- From 다음에 공백이 하나 있고 그 이후 아무 문자가 와도 상관없다. (.*)
- @ 문자를 찾는다.
- ()로 쌓여있는 조건의 문자열만 추출한다.
- 공백이 아닌 문자가 반복되는 구간을 추출한다. 즉, 공백이 나올 때 까지의 문자열을 추출한다. ([^ ]*)
지금까지의 내용을 종합하여, 텍스트파일에서 특정 패턴을 찾고 그 패턴 중 가장 큰 값이 무엇인지 확인할 수 있다.
import re
hand = open('mbox-short.txt')
numlist = list()
for line in hand :
line = line.rstrip()
stuff = re.findall('^X-DSPAM-Confidence: ([0-9.]+)', line)
if len(stuff) != 1 :
continue
num = float(stuff[0])
numlist.append(num)
print('Maximum : ', max(numlist))
END
반응형
'IT > Python' 카테고리의 다른 글
[Python] urllib (0) | 2020.11.14 |
---|---|
[Python] 소켓 (0) | 2020.11.14 |
[Python] 정규식을 이용한 패턴 추출 (1) | 2020.11.10 |
[Python] 정규식 (Regular Expression) (0) | 2020.11.03 |
[Python] 튜플을 이용한 딕셔너리 정렬 (0) | 2020.10.13 |
댓글
공지사항