두번 째 주가 시작되었다. 주말은 나름 잘 쉬고 온 것 같다. 같은 기수 분들이랑 어느정도 친해진 것 같아서 기분이 좋았다ㅎㅎㅎㅎㅎ
string관련 함수
str.split() argument에 아무것도 없는 경우, space, \n을 전부 지움
str.strip(character) str속에 포함된 character 전부 지우기
-> strip의 argument가 아무것도 없으면, 문자열 맨 앞뒤의 space와 \n제거
str.join(list) list 안에 있는 string들을 str을 사이에 끼워서 하나로 연결
str.find(str1) str속에 str1 문자열이 어디에 있는지를 확인. 해당하는 str1 부분의 첫 인덱스를 반환. 없으면 -1 반환
-> str.find(str1, start_idx, end_idx)형태로 find 범위 지정가능
str.count(str1) str속에 str1 문자열이 몇개나 있는지 확인
str.startswith(str1) str이 str1으로 시작하는 문자열인가?
str.endswith(str1) str이 str1으로 끝나는 문자열인가?
str.replace(str_target, str1) str의 '모든 'str_target 부분을 str1으로 치환
-> str.replace(str_target, str1, count)는 앞에서부터 count의 횟수 만큼만 치환
str.isalpha() str이 오직 alphabet으로만 이루어져 있는지 확인 (공백도 not alphabet으로 간주)
str.isdigit() str이 오직 number로만 이루어져 있는지 확인 (공백도 not number으로 간주)
str.isalnum() str이 오직 alphabet+number로만 이루어져 있는지 확인 (공백도 false로 간주)
str.isupper() str이 오직 대문자로만 이루어져 있는지 확인 (alphabet만 검사)
str.islower() str이 오직 소문자로만 이루어져 있는지 확인 (alphabet만 검사)
str.lower() str의 모든 alphabet들을 소문자로 변경
str.upper() str의 모든 alphabet들을 대문자로 변경
파일 입출력(보충)
open의 반환객체인 File Descriptor를 for var in fd 구문의 fd에 넣을 경우, var는 파일의 one line단위가 된다.
(참고)
텍스트파일은 문자들이 '한 줄'로 처음부터 끝까지 이어져 있는 sequence이다. text editor에서 여러줄로 보이는 이유는, 텍스트에 \n이 있어서 그래픽 적으로 그렇게 보이는 것 뿐이다.
Python의 line 구분법은 시작 문자부터 \n까지 읽는 것이다. (즉 \n 포함하여 문자열로 저장)
readline() 함수 등으로 텍스트파일을 read한 경우, 파일 내부의 특정 위치를 가리키는 포인터가 움직인다. 그 포인터가 가리키는 곳을 기준으로 read작업 등을 수행하는 것이다.
Tip)
텍스트 파일 확장자 중 하나는 csv인데, csv는 표를 텍스트 형식으로 나타낸 것이라 보면 되며, 각 열을 쉼표(,)로 구분한다. 각 행은 줄바꿈으로 구분한다.
Web
import webbrowser로 웹 브라우저 관련 기능을 사용할 수 있다.
예시) webbrowser.open(url)
import requests
서버에게 요청을 하고 정보를 받는 기능을 하는 패키지이다
CS환경이라 함은 보통 Client-Server환경을 의미한다.
e.g.) requests.get(url).text 는 해당 url의 html 텍스트를 반환한다.
Beautiful Soup 패키지
Beautiful Soup는 텍스트 형태의 html에서 원하는 html 태그를 쉽게 찾게 해 주는 도구입니다.
불러오기: from bs4 import BeautifulSoup
BeautifulSoup(html, option) 텍스트 형태의 html파일을 "soup 객체"로 변환하고 반환. option은 "lxml", "html.parser"등이 있다.
soup.find(tag) 해당 tag의 가장 첫 번째 내용을 반환
soup.find(tag).string 해당 tag의 가장 첫 번째 내용을 <>부분 제외하고 반환
soup.find(tag).get_text() 해당 tag의 가장 첫 번째 내용을 <>부분 제외하고 반환
(주의!) string글자는 그대로 사용!!
-> 차이점이 있다면 내용이 비었을 경우, .string은 None을 반환, get_text()는 아무것도 반환 안함
soup.find_all(tag) 해당 tag의 모든 내용을 list 형태로 반환
soup.find_all(list) parameter를 list로 하여 find_all 효과를 각각 적용
soup.find_all(dict) 속성:이름 형태의 dictionary를 넣어서 조건에 맞는 텍스트 반환
ex) soup.find_all({"id" : "main"})
soup.find_all('p', {"class" : "text"}) -> 태그 이름이 p 이면서 속성이 class이고 class이름이 text인 내용을 반환
soup.select(arg) soup객체의 내용(속성)을 변경
-> arg는 "태그 이름", ".클래스명", "#아이디명", "상위 태그 > 하위 태그" 등 사용가능
일반적인 순서
1. html = requests.get(url).text
2. soup = BeautifulSoup(html, option)
3. soup.find_all 등 이용하여 content 추출
4. find_all()함수의 반환형은 .get_text() 함수를 가지고 있지 않다. 따라서 find_all의 반환값인 list의 각 요소에 대하여 각각 element.get_text() 적용해야 함.
이미지 저장하기
1. 로컬 컴퓨터에 저장할 사진의 경로(파일 이름 포함)로 open()함수 호출. 이때 옵션은 wb이다.
2. 버퍼 사이즈를 설정한다.
3. for buffer_size in response.iter_content(buffer_size):
fd.write(buffer_size)
해당 구문으로 저장.
(response자료형은 requests.get()함수의 반환형이다!)
[PLAYDATA] 데이터 엔지니어링 8월 4주차 8/23 (0) | 2023.08.23 |
---|---|
[PLAYDATA] 데이터 엔지니어링 8월 4주차 8/22 (0) | 2023.08.22 |
[PLAYDATA] 데이터 엔지니어링 8월 3주차 8/18 (0) | 2023.08.18 |
[PLAYDATA] 데이터 엔지니어링 8월 3주차 8/17 (0) | 2023.08.17 |
[PLAYDATA] 데이터 엔지니어링 8월 3주차 8/16 (0) | 2023.08.17 |