Python 기초5

UICHEOL_HWANG·2023년 8월 10일

파이썬기초

목록 보기
7/12

LIST 심화

1. 리스트와 함께 사용하는 함수

  • sorted() : 정렬
  • min() : 최소값을 구해주는 함수
  • max() : 최대값을 구해주는 함수
  • sum() : 더해주는 함수

가장 큰 수 출력하기

#원래는 max()함수 
a = [38,21,53,62,19]
max(a)

search 함수 구현

a = [38,21,53,62,19]

temp = a[0] 
for i in a :
	if temp <= i :
	temp = i 
	print(temp)
38
53
62

#알고리즘의 초석이 되는 비교란

LIST 표현식 (list comprehension) 사용하기

  • list 안에 for 반복문과 if else 조건식을 한번에 적용
  • 다소 복잡해 보일 수 있으나, 여러 줄의 코드를 1줄로 줄일 수 있고, for,if else문을 쓸 때 보다 처리 속도가 빠릅니다.

[식 for 변수 in list]

# 0부터 9까지 숫자를 생성하여 리스트 생성 
[x for x in range(1,10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

[x for x in range(1,10) if x%2 ==0]
[2, 4, 6, 8]

파일 읽기, 파일 쓰기

  • open()
  • with open()

1) open()

  • 파일에 문자열을 쓰거나 읽을 때는 open 함수로 파일을 열어서 write 메소드를 사용해 저장
변수명 = open("파일이름",파일모드(w,r,bw,br)
변수명.write("저장할 내용")
변수명.close()

close로 꼭 파일을 닫아 주어야함

만든 파일 읽어오기 옵션만 w => r


변수1 = open("읽어올 파일명", 'r')
변수2 = 변수1.read()
변수1.close()
file = open('test.txt','w')
file.write('파일 만들기 연습입니다.')
file.close()

with문 이용

with open('test_with.text','w') as file3:
  file3.write("파일 만들기 연습2")

with open('test_with.text','r') as file4:
  my_file2 = file4.read()

print(my_file2)

🍜실전 예제

  • readlines() : 파일을 한 줄 씩 읽어와서 list로 변경

hotels.com에서 크롤링한 데이터들을 읽어온다.

with open('/content/drive/MyDrive/hotels_info.csv', 'r' ) as test_file:
  my_read_file = test_file.readlines()

print(my_read_file)
hotelId,hotelName,tripType,tripTypeText,reviewDate,rating,description,isKorNot\n',
 ',서울 웨스틴조선호텔 (.... 
 ',서울 웨스틴조선호텔 (...

대략 이런식으로 나와있다

list 형식으로 바뀌었는데 이걸 리뷰만 긁어오고싶다~

그럼 어떻게 해야하느냐?

for문을 이용하면 리스트가 풀리는데 이 부분을 split을 이용해서 콤마로 나누어 주고 / 그 안에서 다시 잡힌 리스트 내에서 추출해주고 싶은 인덱스를 반복해서 추출해주면 된다.

Detail Logic

사용자 리뷰 - 호텔이름, 여행종류, 평점,리뷰글.split(’,’)

all_reviews = []
for reviews in data:
	temp = review.split(,) - 호텔 정보가 담긴 list 
	temp2 = temp[7] 
	all_reviews.append(temp2)

JSON 언패킹

서울특별시 관광지 입장정보 JSON 데이터 언패킹하기

with open ('/content/drive/MyDrive/서울특별시_관광지입장정보_2011_2016.json','r') as file :
  dict_list = file.read()
tour_info = []

for i in dict_list:
  for_num = i.get('ForNum',0)
  gun_name = i.get('gungu','unknown')
  res_num = i.get('resNm',0 )
  acd_num = i.get('addrCd',0)
  r_num = i.get('rnum')
  sido_name=i.get('sido','unknown')
  day_num = i.get('yyyymm',0)
  Nat_num = i.get('NatNum',0)

  tour_info.append([for_num,gun_name,res_num,acd_num,r_num,sido_name,day_num,Nat_num])

for문으로 돌면서~ get을 넣어준다 만약 get을해서 없으면 0을 반환하고 있으면 값을 가져와주는 함수

대략적으로 아이템들이 모여진걸 확인할 수 있다.

그것을 다시 딕셔너리로 묶어주려면

tour_info2= [] 
#for_num,gun_name,res_num,acd_num,r_num,sido_name,day_num,Nat_num

for i in tour_info:
  create_dict = dict(외국인수=i[0],시군구명=i[1],관광지명=i[2],관리번호=i[3],관리번호2=[4],시도명=i[5],일자=i[6],나라번호=i[7])
  
  tour_info.append({for_num,gun_name,res_num,acd_num,r_num,sido_name,day_num,Nat_num})
	tour_info2.append(create_dict)

완성이다

오늘 내용 요약하자면 리스트 연산함수 / 읽기 쓰기 with문 / 리스트 컴프리헨션 / 딕셔너리 언패킹 패킹 등이다.


🎨주목할만한 예제

#호텔 정보 크롤링을 한 파일이 list로 담겼을 때 어떻게 반복문으로 분해를 시켜주느냐

with open('/content/drive/MyDrive/hotels_info.csv', 'r' ) as test_file:
  my_read_file = test_file.readlines()

print(my_read_file)

point_list = []

for i in my_read_file[1:]:
  text = i.split(',')
  review_point = text[6]
  point_list.append(review_point)

for문과 split을 적절히 사용하는 방법을 잘 익혀두기 위해 리마인드차 적어놓았다 아주 훌륭한 방법

profile
개발 취미로 하는 세일즈맨

0개의 댓글