인(디) 코딩
문자열 다루기
정규 표현식
파일
디렉토리
모듈과 패키지
1.CSV
2.XML
3.JSON
기본 단위
-바이트(byte): 컴퓨터의 기본 저장 단위
-유니코드: 최상위 문자
인코딩 과 디코딩
i)인코딩
: 문자열->바이트(사람언어-> 컴퓨터 언어)
ex)
ord(): 문자-> 유니숫자 변환
ii)디코딩
:바이트-->문자열(컴퓨터-> 사람)
ex)
chr(): 유니숫자 -> 문자 변환
\' :홑따옴표' 출력
\" :겹따옴표" 출력
\t :탭
\n :줄바꿈
\:백슬래시\ 출력
\r:개행복귀
ii)원시문자열(raw string)
-->이스케이프 문자가 적용되지 않게 함.
-->사용법: 문자열을 시작하는 따옴표 앞에 r을 붙이기
startswith('문자열'): 이 문자열로 시작하는 값 찾기
EmployeeID = ['OB94382', 'OW34723', 'OB32308', 'OB83461',
'OB74830', 'OW37402', 'OW11235', 'OB82345']
Production_Employee = [P for P in EmployeeID if P.startswith('OB')] # 'OB'로 시작하는 직원 ID를 다 찾아봅니다
Production_Employee
endswith('문자열'):이 문자열로 끝나는 값 찾기
import os
image_dir_path = os.getenv("HOME") + "/data/pictures"
#- 각자의 사진이 보관된 디렉토리를 골라 주세요.
photo = os.listdir(image_dir_path )
png = [png for png in photo if png.endswith('.png')]
print(png)
trimming(): 띄어쓰기로 표기되는 공백문자 만드는 함수.
#txt = " 공백 문자를 제거해 보아요. "
txt = " Strip white spaces. "
print('[{}]'.format(txt))
print('--------------------------')
#- 양쪽 공백 제거 : strip()
print('[{}]'.format(txt.strip()))
print('--------------------------')
#- 왼쪽 공백 제거 : lstrip()
print('[{}]'.format(txt.lstrip()))
print('--------------------------')
#- 오른쪽 공백 제거 : rstrip()
print('[{}]'.format(txt.rstrip()))
upper():모든 문자 대문자
lower():모든 문자 소문자
capitalize():첫 글자만 대문자로 변환
문자열의 구성에 따라 boolean의 값 반환
예시
isupper():문자열이 모두 대문자면 True ㅇ니면 False
islower():문자열이 모두 소문자면 True 아니면 False
istitle():문자열의 첫 글자만 대문자면 True아니면False
isalpha():문자열이 모두 알파벳 문자면 True아니면False
isalnum():문자열이 모두 알파벳 문자와 숫자로만 되어있다면 True 아니면 False
isdecimal():문자열이 모두 숫자로 되어있으면 True 아니면 False
print("aiffel".isupper())
print("aiffel".islower())
print("PYTHON".istitle())
print("python101".isalpha())
print("python101".isalnum())
print("101".isdecimal())
join():반복 가능한 객체를 받는 메소드로 각각 원소를 모아 하나의 문자열로 합쳐줌,문자열 반환
split():구분자를 기준으로 하나의 문자열을 나누어 주고 기본값은 쉼표(,), 리스트 반환/
replace():replace(s1,s2)형태로 문자열 내 문자열 s1->s2
iv)불변(immutable)의 문자열
가변객체(mutable object)
-객체를 생성한 후 값 수정
-변수는 값이 수정된 객체
불변객체(immutable object)
-객체를 생성한 후 객체의 값 수정X
객체비교
-id(object): 객체를 위한 고유한 상수 리턴
-is
4.정규표현식(crtl+F, 검색 기능 지원)
정의: 특정 규칙을 가진 문자열 집합으로, 찾고자하는 문자열 패턴 정의 혹은 기존 문자열과 일치하는지 비교 검색함
import re
Complile()
1) 찾고자 하는 문자열의 패턴 정의
2)re.compile()-->해당 객체 반복 사용 가능.
Method(메소드)
1) 정의된 패턴과 매칭되는 경우를 찾아 다양한 처리.
-search(): 일치하는 패턴 찾기
-match(): 패턴이 검색 대상에 처음부터 일치.
-findall():일치하는 모든 패턴 찾기
-split():패턴 나누기
-sub(): 일치하는 패턴으로 대체하기
-group(): 실제 결과에 해당하는 문자열을 반환.
구현순서
1)import re 를 통해 정규식 모듈을 가져옵니다.
2)re.compile() 함수로 Regex 객체를 만듭니다.
3)검색할 문자열을 Regex 객체의 search() , findall() 메소드로 전달
파일
i)메소드
f.read() : 파일을 읽는다.
f.readline() : 파일을 한 줄씩 읽는다.
f.readlines() : 파일 안의 모든 줄을 읽어 그 값을 리스트로 반환
f.write(str) : 파일에 쓴다. 문자열 타입을 인자로 받는다.
f.writelines(str) : 파일에 인자를 한 줄씩 쓴다.
f.close() : 파일을 닫는다.
f.seek(offset) : 새 파일의 위치를 찾는다
디렉토리(파일이 저장되는 위치)
-표준: sys, os, glob
-개념
모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py
패키지(package) : init.py가 포함된 폴더로 흔히 라이브러리
-PIP(Package Installer for Python) : 패키지 관리자
-PyPA(Python Packaging Authority) : 파이썬 패키지를 관리하고 유지하는 그룹
-PyPI(The Python Package Index) : 파이썬 패키지들의 저장소
---함수
sys.path : 현재 폴더와 파이썬 모듈들이 저장되어 있는 위치를 리스트 형태로 반환
sys.path.append() : 자신이 만든 모듈의 경로를 append 함수를 이용해서 추가함으로써 추가한 디렉토리에 있는 파이썬 모듈을 불러와 사용할 수 있다.
os.chdir() : 디렉토리 위치 변경
os.getcwd() : 현재 자신의 디렉터리 위치를 반환
os.mkdir() : 디렉토리 생성
os.rmdir() : 디렉토리 삭제 (단, 디렉토리가 비어 있을 경우)
glob.glob() : 해당 경로 안의 디렉토리나 파일들을 리스트 형태
os.path.join() : 경로(path)를 병합하여 새 경로 생성
os.listdir() : 디렉토리 안의 파일 및 서브 디렉토리 리스트
os.path.exists() : 파일 혹은 디렉토리의 경로 존재 여부 확인
os.path.isfile() : 파일 경로의 존재 여부 확인
os.path.isdir() : 디렉토리 경로의 존재 여부 확인
os.path.getsize() : 파일의 크기 확인
파일을 검색 해 열어 보시면 각각의 데이터가 쉼표(,)로
구분돼 있는 것을 확인하실 수 있을 거예요.
1-1) CSV파일과 Pandas
판다스(pandas)의 DataFrame은 to_csv 메소드를 지원합니다.
이 메소드를 이용하면 csv 파일로 쉽게 저장할 수 있어요.
데이터를 준비한 뒤 판다스를 활용해 csv 파일로 저장해 보겠습니다.
1-2) CSV파일과 DataFrame
csv file ---------------> DataFrame
(pd.read_csv())
<---------------
(df.to_csv())
<>로 구분된 언어
API정보를 요청하고 저장할 때 이용
XML은 다목적 마크업 언어(Extensible Markup Language)이다.
마크업 언어는 태그(tag)로 이루어진 언어를 말하며,
상위(부모)태그 - 하위(자식)태그의 계층적 구조를 가지고 있다.
XML은 요소(element)들로 이루어져 있다.
요소는 <열린태그> 내용 </닫힌태그>가 기본적인 구조이며,
속성(attribute)값을 가질 수도 있다.
2-1) XML파일 만들기
-ElementTree
파이썬 표준 라이브러리인 ElementTree는 XML 관련 기능을 다음과 같이 제공합니다.
Element() : 태그 생성
SubElement() : 자식 태그 생성
tag : 태그 이름
text : 텍스트 내용 생성
attrib : 속성 생성
dump()
생성된 XML 요소 구조를 시스템(sys.stdout)에 사용합니다.
write() : XML 파일로 저장
리스트(list)와 유사한 메소드를 제공
append, insert, remove, pop
2-2) XML 파싱.
0) 추출하고자 하는 데이터가 문자열 안에 포함되어 있을 경우 추출
1) ElementTree(아래 예시)
2) BeautifulSoup
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#parsing-xml
3)JSON
JSON은 JavaScript Object Notation의 약자로,
웹 언어인 JavaScript의 데이터 객체 표현 방식으로
웹 브라우저와 다른 애플리케이션 사이에서 HTTP 요청으로
데이터를 보낼 때 널리 사용하는 표준 파일 포맷중 하나로,
XML과 더불어 웹 API나 config 데이터를 전송할 때 많이 쓰입니다
CSV 파일에 보다 더 유연하게 데이터를 표현할 수 있고
XML 파일보다 파일을 쉽게 읽고 쓸 수 있다는 장점이 있습니다.
javascript기반 이용 가능.
웹에서 JavaScript나 JavaScript 기반의 Framework가
많이 사용되고 있는 점을 미루어 봤을 때 이는 큰 강점이 될 수 있습니다.
3-1) json 파싱
i)파일 저장
ii)파일 읽기