Python 40

Python(20) BeautifulSoup 크롤링

예전에 bs4랑 Selenium이랑 이미 한번 공부하고 핫딜 사이트 크롤링해서 csv파일로 카테고리별로 나눠서 저장해오는 코드도 연습했었는데 크롬 드라이버 에러 때문에 실행이 안된다.. 자동으로 크롬 버전에 맞는 드라이버 설치해서 돌리는 코드였는데 아직 드라이버는 업데이트가 안되어서 그런듯? 이 부분은 나중에 다시 공부해서 고치는걸로. 기본 세팅 import requests from bs4 import BeautifulSoup response = requests.get('사이트url') # GET방식으로 HTTP요청 # params = {'pa1': 'val1', 'pa2': 'value2'} # response = requests.get('사이트url', params=params) # print(res..

Python 2023.09.22

Python(19) 정규표현식

https://regexr.com/5nvc2 RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 여기서 연습 가능 정규표현식 일반 문자열 ^hello : 처음에 나오는 hello hello$ : 마지막에 나오는 hello h.llo : h 다음에 어떤 문자든 1개의 문자(영문, 특수문자, 숫자, 한글 등)이 오며 llo가 나옴 대괄호(택1) h[eao]llo : hello, hallo, hollo를 선택. h[e!ao]llo : hello, hallo, hollo, h!llo 선택. [a-z] : 알파벳 소문자 중 하나 ..

Python 2023.09.22

Python(18) f-string 문법

중괄호 출력하고 싶을 때 value = 'hello' print(f"{value}") # hello print(f"{{value}}") # {value} print(f"{{{value}}}") # {hello} print(f"{{{{value}}}}") # {{value}} print(f"{{{{{value}}}}}") # {{hello}} print(f"{{{{{{value}}}}}}") # {{{value}}} 포맷팅 지정 num = 3.14159 print(f"{num:.2f}") # 출력: 3.14 # 소숫점 두번째 자리까지 표현해라 name = "Alice" print(f"{name:>10}") # 출력: Alice # 10자리에 맞춰서 오른쪽 정렬 something = '볼펜' EA = 2 o..

Python 2023.09.21

Python(17) args, kwargs, 이터레이터와 제너레이터

*args : 가변 아규먼트, 여러가지 인자들을 가변인수로 받음. tuple로 저장 **kwargs : 딕셔너리로 가변인수를 받음. a, b, *c = 10, 20, 30, 40, 50 print(a) # 10 print(b) # 20 print(c) # (30, 40, 50) args 패킹 def func(*args): print(args) # (10, 20, 30) func(10, 20, 30) # 10, 20, 30 => *args => (10, 20, 30) args 언패킹 def func(a, b, c): print(a, b, c) # 10 20 30 args = (10, 20, 30) func(*args) # (10, 20, 30) => *args => 10, 20, 30 kwargs 패킹 d..

Python 2023.09.20

Python(16) 일급 함수와 고차 함수, 클로저, 데코레이터

일급 함수 : 함수나 메서드를 일급 객체(값, 주소) 취급 고차 함수 : 함수를 아규먼트로 받거나 return값으로 반환하는 함수 donghu = print donghu('Hello World') # Hello World class Cat: def sound(self): print('냐옹') licat = Cat() licat_sound = licat.sound licat_sound() # licat.sound()와 같다. l = [10, 20, 30] la = l.append la(40) print(l) # [10, 20, 30, 40] def add(x, y): return x + y def sub(x, y): return x - y funcs = [add, sub] print(funcs[0](2, ..

Python 2023.09.20

Python(15) 예외 처리와 오류 관리

Error의 종류 # Syntax Error 문법 에러 for i in range(10) print(i) # Name Error 이름 에러 print(x) # Type Error 타입 에러 x = 10 y = '20' print(x + y) # Index Error 인덱스 에러 my_list = [1, 2, 3] print(my_list[3]) # Key Error 키 에러 my_dict = {'a': 1, 'b': 2} print(my_dict['c']) # Value Error 값 에러 int('a') # ZeroDivision Error 0 나누기 에러 x = 10 y = 0 print(x / y) # Attribute Error 어트리뷰트 에러 : 객체에 존재하지 않는 속성이나 메서드 호출 my_..

Python 2023.09.19

Python(14) 모듈

모듈 다른 파일에 작성된 클래스나 함수, 변수를 재사용할 수 있도록 한것 import로 불러옴 # hoo.py name = 'KimDonghu' age = 20 def hello(): return 'hello world' 보통 from은 폴더 import는 모듈 import hoo print(hoo.name) # KimDonghu hoo.hello() # hello world from hoo import name, age # 이것도 많이 사용함 print(name) # KimDonghu print(age) # 20 from hoo import name as n print(n) # KimDonghu import hoo as h print(h.name) # KimDonghu 많이 사용하는 모듈 import ..

Python 2023.09.19

Python(13) 클래스 심화

클래스 메서드 클래스에 작용하는 메서드 인자를 cls로 명명함. class MyClass: count = 0 # 이거 안붙이면 cls는 그냥 인스턴스 변수 됨 @classmethod def increment(cls): cls.count += 1 a = MyClass() b = MyClass() MyClass.increment() print(MyClass.count) # 출력 : 1 a.count, b.count # 1 1 원래 클래스 메서드를 안썼을 때 class MyClass: count = 0 def increment(self): self.count += 1 a = MyClass() b = MyClass() # MyClass.increment() # error a.increment() print(a...

Python 2023.09.19

Python(12) 클래스

클래스 설계 도면 또는 공장 같은 느낌 class Car: # 차의 설계 도면 또는 차 공장 max_speed = 300 max_people = 5 car_gear = ['P', 'D', 'R', 'N'] def start(self): print('차가 출발합니다!') def stop(self): print('차가 멈췄습니다!') # 테슬라 공장에서 나온 자동차 # model x, y, s! modelx = Car() modely = Car() models = Car() # Car.max_speed # modelx의 속도를 보고 싶으면 modelx.max_speed를 찍어야 함 print(models.car_gear[1]) # D models.start() # 차가 출발합니다! models.stop() ..

Python 2023.09.17