이 문제의 경우도 page 소스 보기를 했을 때  아래와 같이 나왔다. banner.p 라는 파일을 이용하라는 것 같아 확장자명을 해 본 결과 해당 파일은 pickle 라는 라이브러리가 저장하는 파일이였다.

pickle이란 파일을 객체 상태로 저장하여 나중에 읽을 때 조금 더 손쉽게 데이터에 접근하기 위해 저장하는 방식이다.

<html>
<head>
  <title>peak hell</title>
  <link rel="stylesheet" type="text/css" href="../style.css">
</head>
<body>
<center>
<img src="peakhell.jpg"/>
<br><font color="#c0c0ff">
pronounce it
<br>
<peakhell src="banner.p"/>
</body>
</html>

<!-- peak hell sounds familiar ? -->

처음 데이터를 불러왔을 때 아래와 같이 되어 있었는데 특수문자와 공백 그리고 그 뒤에 숫자가 오는 것으로 보아 특정한 규칙으로 그림 형식을 만드는 것이라 생각했다

리스트 안에 튜플이 있는 구조

그래서 아래와 같이 첫번째 값을 가져와 튜플의 값을 곱한뒤 result 에 저장 후 반복하여 그림을 출력하였다.

import pickle, urllib.request
url_data = urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/banner.p')
data = pickle.load(url_data)
url_data.close()
result = ""
for list_data in data:
        print(result)
        result = ""
        for tuple_data in list_data:
            result += (''.join(tuple_data[0]) * tuple_data[1])

 

+ Recent posts