본문 바로가기

WarGame/PythonChallenge

Python Challenge 03 :: urlopen, re.findall

Challenge 03은 아래와 같습니다.



3명의 Bodyguards에게 둘러 쌓여 있다고 합니다. 감이 오시죠?

정규표현식을 쓸때가 왔습니다.

아래와 같은 코드를 만들었습니다.



정규표현식을 사용하기 위해서는 re 레퍼런스를 불러와야 합니다.

  • findall()정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴
너무나 많은 결과가 나왔습니다. 잠시 고민하다가 소스와 매핑시켜보니 3명의 이상의 Boardguard가 있는 경우도 있군요.

따라서 다음과 같은 코드를 만들었습니다.



findall() 안에 정규식을 괄호로 묶어주니 묶음마다 tuple로 구분되어 지더군요.


Challenge 03 까지 왔으니 좀 더 응용해 봅시다.

페이지의 소스를 urllib를 이용하여 자동으로 가져와서 변수에 넣어 보겠습니다. 코드는 아래와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
import urllib.request
import re
 
src = urllib.request.urlopen("http://www.pythonchellenge.com/pc/def/equality.html")
 
src_str = str(src.read()).replace('\\n','').split('<!--')
 
= src_str[1]
 
li = re.findall('([a-z][A-Z]{3})([a-z])([A-Z]{3}[a-z])', t)
 
for i in li:
    print(i[1], end='')
cs
  • urlopen() : 웹 페이지의 정보 가져옴
  • read() : 소스 출력
  • cf. headers, info() : 헤더 출력

좀 더 지식인 다운 코드가 완성된 것 같습니다. 


'WarGame > PythonChallenge' 카테고리의 다른 글

Python Challenge 06 :: zipfile  (0) 2015.10.26
Python Challenge 05 :: pickle  (0) 2015.10.23
Python Challenge 04 :: urlparse  (0) 2015.10.22
Python Challenge 02 :: count  (0) 2015.10.22
Python Challenge 01 :: maketrans  (1) 2015.10.21