반응형

파이썬에는 다양한 타입의 바구니가 있는데, 사용할 때마다 헷갈린다. 

Type

Description

Definition

Operation

List

가장 다양하게 사용.

여러 가지 타입을 답을 수 있음

a=[1,2,3,4,5,6]

b=['a', 'b', 'c']

a[0] => 1

a[-1] => 6

a[3:] => 4, 5, 6

if 'a' in b

a.append(7)

Tuple

서로 다른 형식의 데이터를 집합으로 생성 가능

튜플의 요소는 변조하거나 삭제 불가하고 추가는 가능

새로운 값을 넣으려 하면 오류 구문 출력

t1= 1234, 5678, 'abcd', 'efgh'

t2 = t1, (1,2,3,4,5)

t1.append(5)

Set

중복된 요소가 없는 정렬되지 않은 집합으로 중복 항목은 삭제됨

Union, intersection, difference, symmetric difference와 같은 수학적 연산 지원

market={'beef', 'pork', 'lamb', 'beef'}

market2=set('beef', 'pork', 'lamb', 'beef')

if 'beef' in market

a-b => 차집합

a|b => 합집합

a&b => 교집합

a^b => xor

Dictionary

값과 속성으로 이루어짐.

문자열, 정수, 배열, dict등 삽입 가능

data={'김영수': {'영어':80, '수학':90},

         '최희수': {'영어':70, '국어':100}}

data['김영수']['국어']=90

linked_entity_ids_per_entity_type_dct = defaultdict(list)

data['김영수']

data['김영수']['영어']

data.keys() => 키만 print

['Paul', 'Kim']

data.values() => 키 빼구 print

[{'Mathmetics': 90, 'English': 80}, {'Korean': 100, 'English': 70}]

data.items() => 전부 print

[('Paul', {'Mathmetics': 90, 'English': 80}), ('Kim', {'Korean': 100, 'English': 70})]

 

반응형
반응형

Python에서 url을 이용하여 내용을 읽을려고 할 때, 403 Forbidden 에러가 발생을 하였다.

서버에서 사람이 아닌 자동으로 내용을 읽는 '봇(Bot)'같은 것이라 판단하고 차단을 하는 것 같다.

  File "C:\Python27\lib\urllib2.py", line 127, in urlopen

    return _opener.open(url, data, timeout)

  File "C:\Python27\lib\urllib2.py", line 410, in open

    response = meth(req, response)

  File "C:\Python27\lib\urllib2.py", line 523, in http_response

    'http', request, response, code, msg, hdrs)

  File "C:\Python27\lib\urllib2.py", line 448, in error

    return self._call_chain(*args)

  File "C:\Python27\lib\urllib2.py", line 382, in _call_chain

    result = func(*args)

  File "C:\Python27\lib\urllib2.py", line 531, in http_error_default

    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

urllib2.HTTPError: HTTP Error 403: Forbidden 


최초의 코드

response = urllib2.urlopen(url)

return response.read() 


수정된 코드

hdr = {'User-Agent': 'Mozilla/5.0', 'referer' : 'http://m.naver.com'}

req = urllib2.Request(url, headers=hdr)

try:

page = urllib2.urlopen(req)

except urllib2.HTTPError, e:

print e.fp.read()

return page.read()

urllib2.urlopen()을 사용 할 때 위에 코드처럼 헤더를 추가해 주니까 정상적으로 페이지를 읽을 수 있다.




반응형

+ Recent posts