본문 바로가기

카테고리 없음

파이썬 표준 라이브러리(json, requests, math, collections)

6. JSON

JSON(JavaScript Object Notation)은 데이터를 효과적으로 표현하고 교환하기 위한 경량의 데이터 형식이라고 한다. 

웹상에서 데이터를 주고받을 때, 이 형식을 많이 따른다. 

import json
data = {"name": "john", "age": 30, "city": "Seoul"}

json.dumps(data)   #dumps하면 문자열 형식으로 바꿔준다. > str
#json.dumps()를 통해 딕셔너리이던 data의 파일형식을 문자열 형식으로 바꿔준다.

 

반대로, json.loads()를 통해서는 str이었던 것은 dict로 바꿀 수 있다.

json_string = json.dumps(data)
json_string       # >> str.

data = json.loads(json_string)   # >str을 dict로 바꿔줌.
data

 

 

 

 

 

7. requests

크롤링 할 때 많이쓴다. 

 

import requests

response = requests.get('https://httpbin.org/get', params = data)
response

이렇게 하면

<Response [200]>

이러한 결과값을 받을 수 있는데, 200번대 숫자는 (gpt에게 물어보니)

```

<Response [200]>는 HTTP 요청에 대한 응답 코드를 나타내는 것입니다. 여기서 200은 "OK"를 나타냅니다. 이는 서버가 요청을 성공적으로 처리했음을 나타내는 HTTP 상태 코드입니다.

일반적으로, HTTP 상태 코드는 다음과 같이 그 의미를 갖습니다:

  • 200: 요청이 성공했고, 서버가 요청에 대한 적절한 응답을 제공했습니다.
  • 404: 요청한 리소스를 서버가 찾을 수 없습니다.
  • 500: 서버 측에서 오류가 발생하여 요청을 처리할 수 없습니다.```

200번대가 나왔으니 HTTP 요청 결과 저 서버에서 나의 요청을 성공적으로  처리했다는 의미이다. 

 

response_result = response.json()    #json으로 받으면(파씽하면) dict로 사용가능...

 

header

headers = {"User-Agent": "My-User Agent 1.0"}
response = requests.get('https://httpbin.org/get', headers=headers)

이 맨 첫번째 headers라는 코드는 HTTP요청을 보낼 때 서버로 나(클라이언트)에 대한 정보를 저렇게 보내달라고 요청하는 것이다. 이거를 잘 설정해야지 요청을 받을 수 있는 경우가 있으니 신경써야한다. 

 

 

try:
    response = requests.get('https://httpbin.org/get', timeout=0.00001)
except requests.exceptions.Timeout:
    print("시간이 지연되니 다음 단계로 !")
 
        

이 경우 시간을 굉장히 짧게 설정하긴 했지만, 요청을 보냈는데 일정시간이 지나도 응답이 없는경우 다음 단계로 넘어가고자 할 때 유용하게 사용할 수 있다. 

 

 

 

8. math

math는 파이썬에서 수학적인 연산을 위한 모듈이다. 산술연산, 복잡한 수학 계산까지 아주 유용하다. 

 

import math
num = 3.14

print(math.ceil(num))       #올림
print(math.floor(num))      #내림
print(math.trunc(num))      #소숫점 이하 버린다
print(round(num))           #반올림

print(math.exp(1))      	#자연상수 e
print(math.log(3))
print(math.log10(100))      #상용로그 10
print(math.pow(2, 3))       #2의 3제곱

#고딩때 생각난다.
math.pi				#3.141592... 원의 넓이구할 때 그 파이다.

math.sin(math.pi/2)     #삼각함수

math.cos(0)				#사인 코사인 탄젠트 다 계산가능.

math.factorial(5)		#확률에서 나오던 그 팩토리얼. 5!

math.gcd(36, 60)		#최대공약수

math.sqrt(16)			#루트도 씌워줌

 

 

 

 

9. collections

 

요소의 갯수를 셀 때 사용.

 

#collection

colors = ['red', 'orange', 'yellow', 'greed', 'blue', 'Indigo', 'Violet ']

from collections import Counter
count = Counter(colors)
count
Counter({'red': 1,
         'orange': 1,
         'yellow': 1,
         'greed': 1,
         'blue': 1,
         'Indigo': 1,
         'Violet ': 1})

결과는 이렇게 나온다. 

 

 

기사의 텍스트를 긁어와보자. 오늘 마크 저커버그씨가 한국에 방문했다.

text = "한국을 방문 중인 마크 저커버그 메타 최고경영자가(CEO)가 28일 국내 확장현실(XR) 스타트업 관계자들을 만나 XR 분야 콘텐츠 협력 강화 방안을 논의했다. 벤처·스타트업 업계에 따르면 저커버그는 이날 오후 3시경 메타코리아 사무실이 있는 서울 강남 센터필드 이스트를 찾아 XR 스타트업 5여곳의 관계자들과 비공개 간담회를 했다. 한국 스타트업 참석자는 9명 수준으로 알려졌다. 참석한 스타트업 관계자들은 XR 기술을 기반으로 메타 퀘스트나 애플의 비전프로 등 XR 헤드셋을 위한 게임 및 앱 개발사 소속으로 전해졌다."
word_list = text.split(" ")

count = Counter(word_list)
count
Counter({'한국을': 1,
         '방문': 1,
         '중인': 1,
         '마크': 1,
         '저커버그': 1,
         '메타': 2,
         '최고경영자가(CEO)가': 1,
         '28일': 1,
         '국내': 1,
         '확장현실(XR)': 1,
         '스타트업': 4,
         '관계자들을': 1,
         '만나': 1,
         'XR': 4,
         '분야': 1,
         '콘텐츠': 1,
         '협력': 1,
         '강화': 1,
         '방안을': 1,
         '논의했다.': 1,
         '벤처·스타트업': 1,
         '업계에': 1,
         '따르면': 1,
         '저커버그는': 1,
         '이날': 1,
         '오후': 1,
         '3시경': 1,
         '메타코리아': 1,
         '사무실이': 1,
         '있는': 1,
         '서울': 1,
         '강남': 1,
         '센터필드': 1,
         '이스트를': 1,
         '찾아': 1,
         '5여곳의': 1,
         '관계자들과': 1,
         '비공개': 1,
         '간담회를': 1,
         '했다.': 1,
         '한국': 1,
         '참석자는': 1,
         '9명': 1,
         '수준으로': 1,
         '알려졌다.': 1,
         '참석한': 1,
         '관계자들은': 1,
         '기술을': 1,
         '기반으로': 1,
         '퀘스트나': 1,
         '애플의': 1,
         '비전프로': 1,
         '등': 1,
         '헤드셋을': 1,
         '위한': 1,
         '게임': 1,
         '및': 1,
         '앱': 1,
         '개발사': 1,
         '소속으로': 1,
         '전해졌다.': 1})

결과가 좀 긴데... 그래도 단어를 이렇게 세어준다는 것이 굉장하다.