Python

Python01. 파이썬 기초

데브플레이버 2023. 4. 28. 15:49
반응형

 

주피터 노트북

파이썬을 이용하기 위한 개발도구(ILE)에는 jupyter notebook, VS code 등이

있다.

 

변수할당하기

파이썬에서 ‘=’ 는 오른쪽 값을 왼쪽 변수에 할당하는 것이다.

변수명은 숫자로 시작하면 안되고, 특수문자가

포함되면 안된다. 또한 예약어를 사용하면 안된다.

 

파이썬의 자료형

  • 숫자 (Number): 정수(Integer), 실수(Float), 복소수(Complex)
  • 문자열 (String): 문자나 문자열의 연속으로 이루어진 데이터 타입
  • 불리언 (Boolean): True 또는 False를 나타내는 데이터 타입
  • 리스트 (List): 대괄호([])로 둘러싸인 값의 목록으로, 여러 가지 자료형을 포함할 수 있는 시퀀스 타입입니다.
  • 튜플 (Tuple): 소괄호(())로 둘러싸인 값의 목록으로, 리스트와 유사하지만 값을 변경할 수 없는 시퀀스 타입입니다.
  • 세트 (Set): 중괄호({})로 둘러싸인 값의 목록으로, 순서가 없고 중복된 값을 허용하지 않는 자료형입니다.
  • 딕셔너리 (Dictionary): 중괄호({})로 둘러싸인 key-value 쌍의 목록으로, 키와 값이 쌍으로 연결된 자료형입니다.

시퀀스형 자료구조

시퀀스형 자료구조는 번호가 있는 자료이다.

시퀀스의 처음 인덱스 번호는 0으로 시작하며, -1은 뒤에서부터 1번이다.

  • 슬라이싱 : 변수[start:end:step] 의 방법으로 구성, step에서 마이너스를 하면 역순으로 진행한다.

 

format(), f-string

format()

'안녕하세요 ooo입니다.' 와 같이 ooo의 값만 바꾸기 위해 사용되는 함수이며

문자열 안에 중괄호를 집어넣고 변수명. format("{넣고 싶은 값}")을 대입하면 중괄호 안의 값만 유동적으로 변한다.

#문자열에서 동적으로 집어 넣고 싶다면 중괄호를 집어넣는다
print("{}년 {}dnjf {}일 {}입니다.".format(year, month, day)

and의 특징 두구문이 참일 경우 true false 2
or 두 구문중 하나라도 참이면 true 3
not 구문이 참이면 거짓 거짓이면 참 1

 

f-string

파이썬 3.6부터 지원하는 문자열 포맷팅 방법

한줄로 간결하게 나타낼 수 있다는 장점이 있다.

 

 

 

컴퓨터 연산에서는 부동소수점 표현오류가 있다.

→ 0.1은 2진수로 표현하면 후만이다.

for x in range(10): #중간체크할때 자주 사용함 %나머지를 반환 **지수연산 ..나눗셈의 소수점 이하는 제거
    if x % 2 ==0:
        print(x)

 

웹에서 가져오는 자료

웹에 표현되어 있는 모든 숫자는 문자임
따라서 변환이 필요함
int(x) x를 정수형으로 
float(x) x를 실수형으로

 

값을 입력받아서 내용을 출력하기

distance = input("숫자입력")
distance = int(distance) #문자를 숫자로 변환해줘야하기때문 distance=int(input("숫자입력"))으로 해도 됨
if distance <= 3:
    print("걸어가세요")
elif distance  <= 10 :
    print("버스타세요")
else:
    print("택시타세요")
print("수고")

 

for 문을 이용하여 반복하기

반복문에는 for문과 while 문이 있다.

for x in range(10): #조건문 뒤에 :
    print("스팸")

for 변수 in 반복가능한 개체:

반복수행할 코드

 

윤년조건을 활용하여 for 반복문 연습

윤년조건
서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1700년, 1800년, 1900년, 2100년, 2200년, 2300년...)
서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (1600년, 2000년, 2400년...)
  1. 4로 나누어 떨어지는 해
for year in range(1900,2101):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: 
        
        print(year)
  1. 완성본
def func_1(year):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return "윤년임" #리턴을 하면 거기서 끝남 
    else:
        return "아님"
    print("동해물과")

 

while 문

while 문은 for 문과는 다르게 조건이 참일 때만 실행된다.

cnt = 0
while cnt < 10: #무한루프 조심해야함
    print(cnt)
    cnt +=1
#무한루프
cnt = 0
while cnt < 10:
    if cnt ==5:
        cnt+=1
        continue
    print(cnt)

while 조건:

수행할 코드

변화식

 

break , continue

for x in range(100):
    if x %2 == 0:
        break
        print(x)
cnt = 0
while cnt<10:
	if cnt == 5:
		break
	print(cnt)
	cnt+=1

 

리스트 축약형

  • 일반적인 리스트 형식
total = []
for x in range(1,100):
    if x % 3 == 0 and x % 5 == 0:
        total.append(x)

 

  • 리스트 축약형
total=[x for x in range(1,5)]
#리스트 축약형이고 더 선호하는 편 , total.append(X)가 안들어가도 됨
total2 = [x for x in range(1,100) if x % 3 == 0 and x % 5 == 0]
# 조건문을 넣을 수 있음
[year for year in range(1900, 2101) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0]
for x in range(100):
    if x % 2 == 0:
        continue
        print(x)

 

다중문자열

multiline = """동해물과 백두산이"""
#다중문자열

텍스트의 앞뒤로 세개의 따옴표를 이용하여 나타낼 수 있는 다중문자열은 여러 텍스트 문자열을 저장할 수 있다.

print(multiline) 
#\\n 줄바꾸기
ditto = """Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
"""

 

ditto.count("ditto" or "Ditto")
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자

 

소문자, 대문자 변환

ditto.lower()
ditto.upper()

.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.

반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.

이때 변환한 값을 활용하고 싶다면 diito = ditto..lower()처럼 재정의를 해야한다.

 

split

split = ditto.split()
#리스트 형식으로 출력
#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
dict_a

 

 

#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리

 

 

답안

ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1

 

word_dict

def tmp(x):
    return x[1]

 

sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능

def calc(a,b):
    return a+b

#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)

 

상대경로 절대경로
import os
os.getcwd()
import os
os.getcwd()
os.mkdir("test") # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
f=open("./encore.txt", "w", encoding='utf-8') #encore 텍스트파일 상대경로, "w" 쓴다, encoding 형식
f.write("Hi")
f.close()
for roots, dirs, files in os.walk("c:/windows/"):
    for file in files:
        print(f"{roots}/{file}") #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
#파일 목록을 텍스트로 관리 가능

f = open("./pic.txt", "w", encoding='utf-8')
for roots, dirs, files in os.walk("c:/Windows/"):
    for file in files:
        f.write(f"{roots}/{file}\\n")
f.close()
#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(",","")

웹크롤링 (스타벅스 사진 저장)

먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.

import requests
url = "<https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3>"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r =  requests.post(url, data=payload)
star = r.json()['list']

payload에서 가져올 수 있는 값을 찾아본다.

r = requests.post(url, data = payload)

url에 post요청을 보내고 r에 응답을 할당한 것이다.

r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star

딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.

print(multiline) 
#\\n 줄바꾸기
ditto = """Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
"""
ditto.count("ditto" or "Ditto")
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자

소문자, 대문자 변환

ditto.lower()
ditto.upper()

.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.

반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.

split

split = ditto.split()
#리스트 형식으로 출력
#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
dict_a
#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리

답안

ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
word_dict
def tmp(x):
    return x[1]
sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
def calc(a,b):
    return a+b
#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
상대경로 절대경로
import os
os.getcwd()
import os
os.getcwd()
os.mkdir("test") # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
f=open("./encore.txt", "w", encoding='utf-8') #encore 텍스트파일 상대경로, "w" 쓴다, encoding 형식
f.write("Hi")
f.close()
for roots, dirs, files in os.walk("c:/windows/"):
    for file in files:
        print(f"{roots}/{file}") #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
#파일 목록을 텍스트로 관리 가능

f = open("./pic.txt", "w", encoding='utf-8')
for roots, dirs, files in os.walk("c:/Windows/"):
    for file in files:
        f.write(f"{roots}/{file}\\n")
f.close()
#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(",","")

웹크롤링 (스타벅스 사진 저장)

먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.

import requests
url = "<https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3>"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r =  requests.post(url, data=payload)
star = r.json()['list']

payload에서 가져올 수 있는 값을 찾아본다.

r = requests.post(url, data = payload)

url에 post요청을 보내고 r에 응답을 할당한 것이다.

r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star

딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.

print(multiline) 
#\\n 줄바꾸기
ditto = """Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
"""
ditto.count("ditto" or "Ditto")
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자

소문자, 대문자 변환

ditto.lower()
ditto.upper()

.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.

반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.

split

split = ditto.split()
#리스트 형식으로 출력
#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
dict_a
#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리

답안

ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
word_dict
def tmp(x):
    return x[1]
sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
def calc(a,b):
    return a+b
#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
상대경로 절대경로
import os
os.getcwd()
import os
os.getcwd()
os.mkdir("test") # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
f=open("./encore.txt", "w", encoding='utf-8') #encore 텍스트파일 상대경로, "w" 쓴다, encoding 형식
f.write("Hi")
f.close()
for roots, dirs, files in os.walk("c:/windows/"):
    for file in files:
        print(f"{roots}/{file}") #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
#파일 목록을 텍스트로 관리 가능

f = open("./pic.txt", "w", encoding='utf-8')
for roots, dirs, files in os.walk("c:/Windows/"):
    for file in files:
        f.write(f"{roots}/{file}\\n")
f.close()
#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(",","")

웹크롤링 (스타벅스 사진 저장)

먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.

import requests
url = "<https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3>"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r =  requests.post(url, data=payload)
star = r.json()['list']

payload에서 가져올 수 있는 값을 찾아본다.

r = requests.post(url, data = payload)

url에 post요청을 보내고 r에 응답을 할당한 것이다.

r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star

딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.

print(multiline) 
#\\n 줄바꾸기
ditto = """Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
"""
ditto.count("ditto" or "Ditto")
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자

소문자, 대문자 변환

ditto.lower()
ditto.upper()

.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.

반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.

split

split = ditto.split()
#리스트 형식으로 출력
#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
dict_a
#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리

답안

ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
word_dict
def tmp(x):
    return x[1]
sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
def calc(a,b):
    return a+b
#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
상대경로 절대경로
import os
os.getcwd()
import os
os.getcwd()
os.mkdir("test") # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
f=open("./encore.txt", "w", encoding='utf-8') #encore 텍스트파일 상대경로, "w" 쓴다, encoding 형식
f.write("Hi")
f.close()
for roots, dirs, files in os.walk("c:/windows/"):
    for file in files:
        print(f"{roots}/{file}") #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
#파일 목록을 텍스트로 관리 가능

f = open("./pic.txt", "w", encoding='utf-8')
for roots, dirs, files in os.walk("c:/Windows/"):
    for file in files:
        f.write(f"{roots}/{file}\\n")
f.close()
#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(",","")

웹크롤링 (스타벅스 사진 저장)

먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.

import requests
url = "<https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3>"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r =  requests.post(url, data=payload)
star = r.json()['list']

payload에서 가져올 수 있는 값을 찾아본다.

r = requests.post(url, data = payload)

url에 post요청을 보내고 r에 응답을 할당한 것이다.

r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star

딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.

print(multiline) 
#\\n 줄바꾸기
ditto = """Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
"""
ditto.count("ditto" or "Ditto")
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자

소문자, 대문자 변환

ditto.lower()
ditto.upper()

.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.

반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.

split

split = ditto.split()
#리스트 형식으로 출력
#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
dict_a
#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리

답안

ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
word_dict
def tmp(x):
    return x[1]
sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
def calc(a,b):
    return a+b
#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
상대경로 절대경로
import os
os.getcwd()
import os
os.getcwd()
os.mkdir("test") # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
f=open("./encore.txt", "w", encoding='utf-8') #encore 텍스트파일 상대경로, "w" 쓴다, encoding 형식
f.write("Hi")
f.close()
for roots, dirs, files in os.walk("c:/windows/"):
    for file in files:
        print(f"{roots}/{file}") #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
#파일 목록을 텍스트로 관리 가능

f = open("./pic.txt", "w", encoding='utf-8')
for roots, dirs, files in os.walk("c:/Windows/"):
    for file in files:
        f.write(f"{roots}/{file}\\n")
f.close()
#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(",","")

웹크롤링 (스타벅스 사진 저장)

먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.

import requests
url = "<https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3>"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r =  requests.post(url, data=payload)
star = r.json()['list']

payload에서 가져올 수 있는 값을 찾아본다.

r = requests.post(url, data = payload)

url에 post요청을 보내고 r에 응답을 할당한 것이다.

r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star

딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.

print(multiline) 
#\\n 줄바꾸기
ditto = """Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don’t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
"""
ditto.count("ditto" or "Ditto")
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자

소문자, 대문자 변환

ditto.lower()
ditto.upper()

.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.

반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.

split

split = ditto.split()
#리스트 형식으로 출력
#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
dict_a
#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리

답안

ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
word_dict
def tmp(x):
    return x[1]
sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
def calc(a,b):
    return a+b
#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
상대경로 절대경로
import os
os.getcwd()
import os
os.getcwd()
os.mkdir("test") # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
f=open("./encore.txt", "w", encoding='utf-8') #encore 텍스트파일 상대경로, "w" 쓴다, encoding 형식
f.write("Hi")
f.close()
for roots, dirs, files in os.walk("c:/windows/"):
    for file in files:
        print(f"{roots}/{file}") #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
#파일 목록을 텍스트로 관리 가능

f = open("./pic.txt", "w", encoding='utf-8')
for roots, dirs, files in os.walk("c:/Windows/"):
    for file in files:
        f.write(f"{roots}/{file}\\n")
f.close()
#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(",","")

웹크롤링 (스타벅스 사진 저장)

먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.

import requests
url = "<https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3>"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r =  requests.post(url, data=payload)
star = r.json()['list']

payload에서 가져올 수 있는 값을 찾아본다.

r = requests.post(url, data = payload)

url에 post요청을 보내고 r에 응답을 할당한 것이다.

r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star

딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.

 

 

 

반응형

'Python' 카테고리의 다른 글

전국 음식점 데이터 전처리  (0) 2023.04.20