Python/[코칭스터디 9기] 인공지능 AI 기초 다지기
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (4)
김초송
2023. 1. 30. 18:22
Python Data Handling
- CSV (Comma separate Value)
- 필드를 쉼표(,)로 구분한 텍스트 파일
- 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식
- 탭(TSV), 빈칸(SSV) 등으로 구분하기도 함
- 통칭하여 character-separated values(CSV)로 부름
- 파이썬에서는 일반 텍스트 파일처럼 한 줄 씩 데이터를 처리함
- csv 객체
- 문장 내에 들어가 있는 , 등에 대해 전처리 과정 필요
- 간단한 csv 파일 처리 지원
import csv
reader = csv.reader(f,
delimiter=',', quotechar='"',
quoting=csv.QUOTE_ALL)
Attribute | Default | Meaning |
delimiter | , | 글자를 나누는 기준 |
lineterminator | \r\n | 줄 바꿈 기준 |
quotechar | " | 문자열을 둘러싸는 신호 문자 (하나의 문장임을 표시) |
quoting | QUOTE_MINIMAL | 데이터를 나누는 기준이 quotechar에 의해 둘러싸인 레벨 |
- HTML (Hyper Text Markup Language)
- 웹 상의 정보를 구조적으로 표현하기 위한 언어
- 제목, 단락, 링크 등 요소 표시를 위해 Tag 사용
- 모든 요소들은 꺾쇠 괄호 안에 둘러 쌓여 있음
<title> Hello, World </title> => Markup Language - 모든 HTML은 트리 모양의 포함관계를 가짐
- 일반적으로 웹 페이지의 HTML 소스파일은 컴퓨터가 다운로드 받은 후 웹 브라우저가 해석/표시
web : 요청 -> 처리 -> 응답 -> 렌더링 - <html> - <head> - <title>
- <body> - <p> - Element, Attribute Value로 이루어짐
- 페이지 생성 규칙이 있음 -> 규칙을 분석하여 데이터 추출 가능 (크롤링) -> 추출된 데이터로 다양한 분석 가능
- Regular Expression (정규식)
- 정규 표현식, regexp 또는 regex 로 불림
- 복잡한 문자열 패턴을 정의하는 문자 표현 공식
- 특정한 규칙을 가진 문자열의 집합을 추출
- HTML parsing 정규식
- 주민등록번호, 전화번호, 도서 ISBN 등 형식이 있는 문자열을 원본 문자열로부터 추출함
- HTML 역시 tag를 사용한 일정한 형식이 존재하여 정규식으로 추출이 용이
- 정규식 연습장 : http://www.regexr.com/
# 이메일
^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$
# 휴대폰 번호
^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
# 일반 번호
^\d{2,3} - \d{3,4} - \d{4}$
# 주민등록번호
\d{6} \- [1-4]\d{6}
# IP 주소
([0-9]{1,3})\. ([0-9]{1,3})\. ([0-9]{1,3})\. ([0-9]{1,3})
- [ ] : 대괄호 사이의 문자들과 매치
[abc] : 해당 글자가 a, b, c 중 하나가 있다 - - : 사용 범위 지정
[a-zA-Z] : 알파벳 전체 - 메타 문자로 안 쓰고 싶을 땐 앞에 \(역슬래시) 붙임
메타 문자 | 정규식 표현을 위해 원래 의미가 아닌 다른 용도로 사용되는 문자 |
. | 줄바꿈 문자인 \n을 제외한 모든 문자와 매치 |
* | 앞에 있는 글자를 0회 이상 반복 |
+ | 앞에 있는 글자를 최소 1회 이상 반복 |
{m, n} | 반복 횟수를 지정 |
? | 반복 횟수가 1회 |
| | or |
^ | not |
- eXtensible Markup Language (XML)
- 데이터의 구조와 의미를 설명하는 TAG(<>, MarkUp Language)를 사용하여 표시하는 언어
- tag와 tag 사이에 값이 표시됨, 구조적인 정보 표현
- HTML과 비슷한 문법, 대표적인 데이터 저장 방식
- 컴퓨터 간에 정보를 주고 받기 매우 유용한 저장 방식
- 정규표현식으로 Parsing 가능
- 가장 많이 쓰이는 parser인 beautifulsoup으로 파싱
- BeatifulSoup
- 모듈 호출 : from bs4 import BeautifulSoup
- 객체 생성 : soup = BeautifulSoup(xml, "lxml")
- find_all : 정규식과 마찬가지로 해당 패턴을 모두 반환
- get_text() : 반환된 패턴의 값 반환 (<></> 사이의 값)
- JavaScript Object Notation (JSON)
- JavaScript의 데이터 객체 표현 방식
- Key : Value 쌍으로 데이터 표시
- 간결성으로 기계/인간 모두 이해하기 편함
- 데이터 용량이 적고, 코드 전환이 쉬움 -> xml보다 훨씬 간결하고 dict 타입
- XML 대체제로 많이 활용
- 모듈을 사용하여 손쉽게 파싱 및 저장 가능
- 데이터 젖아 및 읽기는 dict type과 상호 호환 가능
- 웹에서 제공하는 API 대부분이 JSON 활용
- 페이스북, 트위터, Github 등 대부분 사이트 -> 각 사이트 마다 Developer API
- 파일 구조 확인 -> read -> Dict type처럼 처리
- .read() : string type
- .load() : dict type으로 읽어옴
- .dump() : json write