12. 텍스트 처리(문자열과 파일)

오대근·2022년 9월 18일
0

Fundamentals

목록 보기
11/16

인코딩과 디코딩

바이트(byte) : 컴퓨터의 기본 저장 단위
1바이트(1byte)는 8비트(8bit)
1바이트에는 2의 8승, 256개의 고유한 값을 저장할 수 있음
인코딩 (encoding): 문자열을 바이트로 변환하는 과정
디코딩 (decoding) : 바이트를 문자열로 변환하는 과정


대소문자 관련 명령어

upper() : 모든 문자를 대문자로 변환
lower() : 모든 문자를 소문자로 변환
capitalize() : 첫 글자만 대문자로 변환

isupper() : 문자열이 모두 대문자로만 되어 있으면 True, 그렇지 않으면 False를 반환
islower() : 문자열이 모두 소문자로만 되어 있으면 True, 그렇지 않으면 False를 반환
istitle(): 문자열의 첫 글자만 대문자로 되어 있으면 True, 그렇지 않으면 False를 반환
isalpha(): 문자열이 모두 알파벳 문자로만 되어 있으면 True, 그렇지 않으면 False를 반환
isalnum(): 문자열이 모두 알파벳 문자와 숫자로만 되어 있으면 True, 그렇지 않으면 False를 반환
isdecimal(): 문자열이 모두 숫자로만 되어 있으면 True, 그렇지 않으면 False를 반환

join(): 인자로 tuple, list, string 등 반복 가능한(iterable) 객체를 받는 메서드. 각각의 원소를 모아 하나의 문자열로 합쳐 줌.
replace(): replace(s1, s2) 형태로 문자열 내 문자열 s1을 s2로 바꿈


정규 표현식

정규 표현식은 특정 규칙을 가진 문자열의 집합을 표현하는 형식 언어로, 찾고자 하는 문자열 패턴을 정의하고 기존 문자열과 일치하는지를 비교하여 문자열을 검색하거나 다른 문자열로 치환하는 데 사용

re 모듈을 import 해서 정규 표현식을 사용할 수 있음.

1)찾고자 하는 문자열의 패턴을 정의하고 = Compile()
2)정의된 패턴과 매칭되는 경우를 찾아 다양한 처리

메서드

search() : 일치하는 패턴 찾기 (일치 패턴이 있으면 MatchObject를 반환합니다)
match() : search()와 비슷하지만, 처음부터 패턴이 검색 대상과 일치해야 합니다.
findall() : 일치하는 모든 패턴 찾기 (모든 일치 패턴을 리스트에 담아서 반환합니다)
split() : 패턴으로 나누기
sub() : 일치하는 패턴으로 대체하기

패턴 : 특수문자, 메타 문자

[ ] : 문자

  • : 범위
    . : 하나의 문자
    ? : 0회 또는 1회 반복
  • : 0회 이상 반복
  • : 1회 이상 반복
    {m, n} : m ~ n
    \d : 숫자, [0-9]와 동일
    \D : 비 숫자, [^0-9]와 동일
    \w : 알파벳 문자 + 숫자 + , [a-zA-Z0-9]와 동일
    \W : 비 알파벳 문자 + 비숫자, [^a-zA-Z0-9_]와 동일
    \s : 공백 문자, [ \t\n\r\f\v]와 동일
    \S : 비 공백 문자, [^ \t\n\r\f\v]와 동일
    \b : 단어 경계
    \B : 비 단어 경계
    \t : 가로 탭(tab)
    \v : 세로 탭(vertical tab)
    \f : 폼 피드
    \n : 라인 피드(개행문자)
    \r : 캐리지 리턴(원시 문자열)

파일

read와 write
f.read() : 파일을 읽는다.
f.readline() : 파일을 한 줄씩 읽는다.
f.readlines() : 파일 안의 모든 줄을 읽어 그 값을 리스트로 반환한다.
f.write(str) : 파일에 쓴다. 문자열 타입을 인자로 받는다.
f.writelines(str) : 파일에 인자를 한 줄씩 쓴다.
f.close() : 파일을 닫는다.
f.seek(offset) : 해당 파일의 위치(offset)를 찾아 파일의 커서를 옮긴다. 파일의 처음 위치는 0이다.
f.tell(): 현재 커서의 위치를 반환한다.

파이썬에서는 지원하는 디렉터리 관련 표준 라이브러리
sys
os
glob

개념

모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py

패키지(package) : 기능적으로 동일하거나 동일한 결과를 만드는 모듈들의 집합 또는 폴더. 종종 라이브러리라고도 불림

라이브러리(library) : 모듈과 패키지의 집합. 패키지보다 포괄적인 개념이나 패키지와 혼용되어 사용되기도 함.

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() : 파일의 크기 확인


여러 파일 다루기

CSV: Comma Seperated Value의 약자로, 쉼표로 구분된 파일.

각각의 칼럼(column)을 쉼표(,)로 구분
판다스(pandas)의 DataFrame은 to_csv 메서드를 지원

XML: Extensible Markup Language의 약자로, 다목적 마크업 언어

인터넷 웹상에서 문서 즉, 내용을 교환할 때 이러한 마크업 언어를 이용. 태그라고 불리는 꺾쇠 모양의 괄호(< >)로 구분된 언어
API에서 데이터를 요청하고 저장할 때 XML이나 JSON 형식을 이용해 데이터를 교환
Element() : 태그 생성
SubElement() : 자식 태그 생성
tag : 태그 이름
text : 텍스트 내용 생성
attrib : 속성 생성

-XML 파싱하기
파싱(parsing, 구문 분석)이란 어떤 문자열을 의미 있는 토큰(token)으로 분해해, 문법적 의미와 구조를 반영한 파스 트리(parse tree)를 만드는 과정
XML 문서를 파싱하게 되면 특정 태그명이나 속성값 등을 불러올 수 있음.
ElementTree, BeautifulSoup 라이브러리 사용

JSON

JavaScript Object Notation의 약자로, 웹 언어인 JavaScript의 데이터 객체 표현 방식. 웹 브라우저와 다른 애플리케이션 사이에서 HTTP 요청으로 데이터를 보낼 때 널리 사용하는 표준 파일 포맷 중 하나로, XML과 더불어 웹 API나 config 데이터를 전송할 때 많이 쓰임.
대표적인 예로 트위터는 개발자용 사이트를 통해 여러 가지 API를 JSON 형태로 제공

profile
neuro.deeplearning

0개의 댓글