TIL_220419_2
- -
μ€ν 2μ°¨μ 볡μ΅..
ν루 μΌμ§ λͺ°μμ°λ κΈ°λΆμ΄μ§λ§..
μ κ°μ€λ½κ²λ ν루 볡μ΅ν μμ΄λΌκ³ λ³Ό μ μκ² λ€..
μ€νλ νμ΄ν ..!!
무μμ λκ²Όλκ°.
μ½λ©μ κ²½μ΄λ‘μμ λλμ§ 2μΌμ°¨ λλ λ .
λλ κ°λμ μ°μμ λ§μμΌλ‘ 볡μ΅μ μνκ³ μλ€.
μΌλ¨ μ΄λ€ κ°λμ΄λ, λ΄κ° μ΄ μ½λμ νλ¦μ μ΄ν΄νκ³ μλ€λ κ²μ΄λ€.
μ½λ©μ 곡λΆν μ§ 4κ°μ μ λμ κΈ°κ°μ΄ μ§λ¬λλ°, μ²μ μ½λ©μ μ λ¬Έν΄μ λ²λ² 거리λ λμ λͺ¨μ΅μ μ¨λ° κ°λ°κ° μκ³ , μ΄ν΄νλ©΄μ 'μ~ μ΄κ±°μμ§~ μ΄λ κ² ν΄μ λλ κ±°μꡬλ!!' λΌλ©° κ°ννλ μμ μ΄ μμλ€.
λ°°μμ λμ μκ³ κ·Έμ μ΄ν΄νλ μλμ μ°¨μ΄μΌ λΏ λλ 무μμ 무μμ νμΌλ©°, λΉμ 곡μλΌλ μ΄μ λ‘ λ€λ₯Έ μ΄λ€κ³Ό μ°¨λ³μ λλ €κ³ νμμκΉ μκ°νλ€.
λ¬Όλ‘ μ°¨μ΄λ μκ² μ§λ§, λλ λ°λΌ κ° μ μλ€λ κ²μ λ무λλ ν° νμ΄ λκ³ , μλ‘κ° λμλ€.
λλ λΉμ 곡μμ΄λ€. μμΌλ‘ λκ΅¬λ³΄λ€ λ λ§μ 곡λΆλ₯Ό ν΄μΌν μλ μμ§λ§, νλ κ²μ μμ μμΆλ κ²μ΄ μλλΌ ν¬κΈ°νμ§ μκ³ λμκ°κΈ°λ₯Ό λ°λλ€.
λ μμ μκ².
[μ€λ ν루 νκΈ°μ λ°°μ΄ λ΄μ© κΈ°λ‘νκΈ°]
Python κΈ°μ΄ κ³΅λΆ
λ³μ & κΈ°λ³Έ μ°μ°
a = 3 # 3μ aμ λ£λλ€
b = a # aλ₯Ό bμ λ£λλ€
a = a + 1 # a+1μ λ€μ aμ λ£λλ€
num1 = a*b # a*bμ κ°μ num1μ΄λΌλ λ³μμ λ£λλ€
num2 = 99 # 99μ κ°μ num2μ΄λΌλ λ³μμ λ£λλ€
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
μλ£ν
- μ«μ, λ¬Έμν
name = 'bob' # λ³μμλ λ¬Έμμ΄μ΄ λ€μ΄κ° μλ μκ³ ,
num = 12 # μ«μκ° λ€μ΄κ° μλ μκ³ ,
is_number = True # True λλ False -> "Boolean"νμ΄ λ€μ΄κ° μλ μμ΅λλ€.
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
- 리μ€νΈν
a_list = []
a_list.append(1) # 리μ€νΈμ κ°μ λ£λλ€
a_list.append([2,3]) # 리μ€νΈμ [2,3]μ΄λΌλ 리μ€νΈλ₯Ό λ€μ λ£λλ€
# a_listμ κ°μ? [1,[2,3]]
# a_list[0]μ κ°μ? 1
# a_list[1]μ κ°μ? [2,3]
# a_list[1][0]μ κ°μ? 2
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
- Dictionary ν (Javascriptμ dictionaryνκ³Ό λμΌ)
a_dict = {}
a_dict = {'name':'bob','age':21}
a_dict['height'] = 178
# a_dictμ κ°μ? {'name':'bob','age':21, 'height':178}
# a_dict['name']μ κ°μ? 'bob'
# a_dict['age']μ κ°μ? 21
# a_dict['height']μ κ°μ? 178
- Dictionary νκ³Ό Listνμ μ‘°ν©
people = [{'name':'bob','age':20},{'name':'carry','age':38}]
# people[0]['name']μ κ°μ? 'bob'
# people[1]['name']μ κ°μ? 'carry'
person = {'name':'john','age':7}
people.append(person)
# peopleμ κ°μ? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]
# people[2]['name']μ κ°μ? 'john'
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
ν¨μ
- ν¨μμ μ μ
# μνλ¬Έμ μμ
f(x) = 2*x+3
y = f(2)
yμ κ°μ? 7
# μ°Έκ³ : μλ°μ€ν¬λ¦½νΈμμλ
function f(x) {
return 2*x+3
}
# νμ΄μ¬μμ
def f(x):
return 2*x+3
y = f(2)
yμ κ°μ? 7
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
- ν¨μμ μμ©
def sum_all(a,b,c):
return a+b+c
def mul(a,b):
return a*b
result = sum_all(1,2,3) + mul(10,10)
# resultλΌλ λ³μμ κ°μ?
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
쑰건문
- if / else λ‘ κ΅¬μ±!
def oddeven(num): # oddevenμ΄λΌλ μ΄λ¦μ ν¨μλ₯Ό μ μνλ€. numμ λ³μλ‘ λ°λλ€.
if num % 2 == 0: # numμ 2λ‘ λλ λλ¨Έμ§κ° 0μ΄λ©΄
return True # True (μ°Έ)μ λ°ννλ€.
else: # μλλ©΄,
return False # False (κ±°μ§)μ λ°ννλ€.
result = oddeven(20)
# resultμ κ°μ 무μμΌκΉμ?
def is_adult(age):
if age > 20:
print('μ±μΈμ
λλ€') # μ‘°κ±΄μ΄ μ°Έμ΄λ©΄ μ±μΈμ
λλ€λ₯Ό μΆλ ₯
else:
print('μ²μλ
μ΄μμ') # μ‘°κ±΄μ΄ κ±°μ§μ΄λ©΄ μ²μλ
μ΄μμλ₯Ό μΆλ ₯
is_adult(30)
# 무μμ΄ μΆλ ₯λ κΉμ?
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
λ°λ³΅λ¬Έ
- 4μ¦, 무쑰건 리μ€νΈμ ν¨κ» μ°μ λλ€!
fruits = ['μ¬κ³Ό','λ°°','κ°','κ·€']
for fruit in fruits:
print(fruit)
# μ¬κ³Ό, λ°°, κ°, κ·€ νλμ© κΊΌλ΄μ΄ μ°νλλ€.
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
- μ΄μ§ μμ©ν΄λ³ΌκΉμ? - κ³ΌμΌ κ°―μ μΈκΈ° ν¨μ
fruits = ['μ¬κ³Ό','λ°°','λ°°','κ°','μλ°','κ·€','λΈκΈ°','μ¬κ³Ό','λ°°','μλ°']
count = 0
for fruit in fruits:
if fruit == 'μ¬κ³Ό':
count += 1
print(count)
# μ¬κ³Όμ κ°―μλ₯Ό μΈμ΄ 보μ¬μ€λλ€.
-- 리μ€νΈ μμ
def count_fruits(target):
count = 0
for fruit in fruits:
if fruit == target:
count += 1
return count
subak_count = count_fruits('μλ°')
print(subak_count) #μλ°μ κ°―μ
gam_count = count_fruits('κ°')
print(gam_count) #κ°μ κ°―μ
-- λμ λ리 μμ
people = [{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27}]
# λͺ¨λ μ¬λμ μ΄λ¦κ³Ό λμ΄λ₯Ό μΆλ ₯ν΄λ΄
μλ€.
for person in people:
print(person['name'], person['age'])
# μ΄λ²μ, λ°λ³΅λ¬Έκ³Ό 쑰건문μ μμ©ν ν¨μλ₯Ό λ§λ€μ΄λ΄
μλ€.
# μ΄λ¦μ λ°μΌλ©΄, ageλ₯Ό 리ν΄ν΄μ£Όλ ν¨μ
def get_age(myname):
for person in people:
if person['name'] == myname:
return person['age']
return 'ν΄λΉνλ μ΄λ¦μ΄ μμ΅λλ€'
print(get_age('bob'))
print(get_age('kay'))
μΆμ² : μ€νλ₯΄νμ½λ©ν΄λ½
리μ€νΈ μΆκ°
Javascript : .push(κ°)
python : .append(κ°)
Python package
Python μμ ν¨ν€μ§λ λͺ¨λ(μΌμ’ μ κΈ°λ₯λ€ λ¬Άμ)μ λͺ¨μ λμ λ¨μ. μ΄λ° ν¨ν€μ§ μ λ¬Άμμ λΌμ΄λΈλ¬λ¦¬. μ§κΈ μ¬κΈ°μλ μΈλΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νκΈ° μν΄μ ν¨ν€μ§λ₯Ό μ€μΉ.
ν¨ν€μ§ μ€μΉ = μΈλΆ λΌμ΄λΈλ¬λ¦¬ μ€μΉ!
- κ°μ νκ²½(virtual environment) = venvμ΄λ?
νλ‘μ νΈλ³λ‘ ν¨ν€μ§λ€μ λ΄μ 곡ꡬν¨
κ°μ μμ€ν μμ μ€νλλ λ€λ₯Έ νμ΄μ¬ μμ© νλ‘κ·Έλ¨λ€μ λμμ μν₯μ μ£Όμ§ μκΈ° μν΄, νμ΄μ¬ λ°°ν¬ ν¨ν€μ§λ€μ μ€μΉνκ±°λ μ κ·Έλ μ΄λνλ κ²μ κ°λ₯νκ² νλ 격리λ μ€ν νκ²½
requests : ajax μ μν μ νλ λΌμ΄λΈλ¬λ¦¬
-- μ¬μ μ€λΉ
import requests # requests λΌμ΄λΈλ¬λ¦¬ μ€μΉ νμ
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
BeautifulSoup : HTML μ λ³΄λ‘ λΆν° μνλ λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μ½κ², λΉμ·ν λΆλ₯μ λ°μ΄ν°λ³λ‘ λλμ΄μ£Όλ(parsing) νμ΄μ¬ λΌμ΄λΈλ¬λ¦¬
-- μ¬μ μ€λΉ
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('HTML λ§ν¬ μ£Όμ',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
- μμ©
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a # κ°κ° λ€λ₯Έ μν κ²½λ‘
#old_content > table > tbody > tr:nth-child(4) > td.title > div > a
# μ°Ύκ³ μ νλ 리μ€νΈ κ³΅ν΅ λ²μ μ§μ (<tr></tr>)
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies: # λ°λ³΅λ¬Έ ꡬμ±
a = movie.select_one('td.title > div > a') # λΆλ¬μ€κ³ μ νλ κ°μ κ²½λ‘ μ§μ
if a is not None: # aκ° None μ΄ μλ λ (is not) None μ μ μΈ
print(a.text) # .text λ‘ μ΄λ¦λ§ λΆλ¬μ¨λ€
ν¬λ‘€λ§(crawling)
μΉ μμ μ‘΄μ¬νλ 컨ν μΈ λ₯Ό μμ§νλ μμ
- HTML νμ΄μ§μ μλ (HTML/CSS) λ±μ νμ±νκ³ , λ°μ΄ν°λ§ μΆμΆ
- Open API(Rest API) λ₯Ό μ 곡νλ μλΉμ€μ Open API λ₯Ό νΈμΆν΄μ, λ°μ λ°μ΄ν° μ€ νμν λ°μ΄ν°λ§ μΆμΆ
- Selenium λ± λΈλΌμ°μ λ₯Ό νλ‘κ·Έλλ°μΌλ‘ μ‘°μν΄μ, νμν λ°μ΄ν°λ§ μΆμΆ
- λνμ μΈ μ΄κ°λ¨ μμ BeautifulSoup
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a = movie.select_one('td.title > div > a')
if a is not None:
title = movie.select_one('td.title > div > a')
rank = movie.select_one('td:nth-child(1) > img')['alt']
star = movie.select_one('td.point')
print(rank, title.text, star.text)
μμ κ°μ΄ νμν λ°μ΄ν°λ§ 골λΌμ νΈμΆν μ μλ€.
DBκ°κ΄
μ μκ³ μ κΊΌλ΄μ°κΈ° μν΄ μ¬μ©νλ€.
DBμ λ κ°μ§ μ’ λ₯
- RDBMS(SQL)
ν/μ΄μ μκΉμκ° μ ν΄μ§ μμ μ λ°μ΄ν°λ₯Ό μ μ₯νλ κ²κ³Ό μ μ¬. λ°μ΄ν° 50λ§ κ°κ° μ μ¬λ μνμμ, κ°μκΈ° μ€κ°μ μ΄μ νλ λνκΈ°λ μ΄λ €μ. κ·Έλ¬λ, μ ννλμ΄ μλ λ§νΌ, λ°μ΄ν°μ μΌκ΄μ±μ΄λ / λΆμμ μ©μ΄.
ex) MS-SQL, My-SQL λ±
- No-SQL
λμ λ리 ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯ν΄λλ DB. κ³ λ‘ λ°μ΄ν° νλ νλ λ§λ€ κ°μ κ°λ€μ κ°μ§ νμκ° μμ. μμ λ‘μ΄ ννμ λ°μ΄ν° μ μ¬μ μ 리ν λμ , μΌκ΄μ±μ΄ λΆμ‘±.
ex) MongoDB
mongoDB μ°κ²°
- pymongo : mongoDB λΌλ νλ‘κ·Έλ¨μ μ‘°μνκΈ° μν λΌμ΄λΈλ¬λ¦¬
dnspython μ λ€μΌλ‘ μ€μΉ
-- μ¬μ μ€λΉ
from pymongo import MongoClient
client = MongoClient('μ¬κΈ°μ URL μ
λ ₯')
db = client.dbsparta
- pymongo(find)
# λͺ¨λ λ°μ΄ν° λ½μ보기
all_users = list(db.users.find({쑰건 : λΉκ΅κ°},{'_id':False}))
print(all_users[0]) # 0λ²μ§Έ κ²°κ³Όκ°μ 보기
print(all_users[0]['name']) # 0λ²μ§Έ κ²°κ³Όκ°μ 'name'μ 보기
for user in all_users: # λ°λ³΅λ¬Έμ λλ©° λͺ¨λ κ²°κ³Όκ°μ 보기
print(user)
- pymongo(find_one)
user = db.users.find_one({'name':'bobby'})
print(user)
user = db.users.find_one({'name':'bobby'})
print(user['age'])
- pymongo(update_one)
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
user = db.users.find_one({'name':'bobby'})
print(user)
- pymongo(delete_one)
db.users.delete_one({'name':'bobby'})
user = db.users.find_one({'name':'bobby'})
print(user)
κ±°μ μμ μμ !
'π¦ λ΄μΌλ°°μμΊ ν > TIL(Today I Learned)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
TIL_220422_λ―Έλ ν νλ‘μ νΈ (0) | 2023.01.01 |
---|---|
TIL_220421_λ―Έλ ν νλ‘μ νΈ (1) | 2023.01.01 |
TIL_220420_ λ―Έλ ν νλ‘μ νΈ (1) | 2023.01.01 |
TIL_220419_1 (0) | 2023.01.01 |
TIL_220418 (1) | 2023.01.01 |
λΉμ μ΄ μ’μν λ§ν μ½ν μΈ
μμ€ν κ³΅κ° κ°μ¬ν©λλ€