AIFFEL FD #05 문자열, 파일 다루기

이재준·2021년 7월 11일
0

AIFFEL Fundamental

목록 보기
6/25
post-custom-banner

핵심 내용

  • 텍스트 데이터
  • 파일과 디렉토리
  • 여러가지 파일 포맷

✍ 텍스트 데이터

인코딩, 디코딩

컴퓨터는 모든 종류의 데이터를 0과 1의 이진 데이터(binary data) 로 표현한다. 이러한 이진 데이터의 최소 단위가 비트(bit) 이고, 비트 8개가 모여 바이트(byte) 가 되어 메모리에는 바이트로 저장이 된다.

따라서, 문자열도 해당되는 숫자가 존재하고 바이트로 변환이 되어 컴퓨터에 전달된다. 이때, 문자열과 바이트로 변환하는 과정을 인코딩, 디코딩이라고 한다.

바이트 (byte) : 컴퓨터의 기본 저장단위
인코딩 (encoding) : 문자열을 바이트로 변환하는 과정 (파이썬 내장함수 ord())
디코딩 (decoding) : 바이트를 문자열로 변환하는 과정 (파이썬 내장함수 chr())

출처: https://sourcedexter.com/data-encodingdecoding-in-python/

탈출(이스케이프) 문자

이스케이프 문자는 \[특정문자] 형태로, 컴퓨터가 특정 기능을 하도록 하는 문자를 문자열에 포함시킬 수 있게하는 특수 문자이다.

이스케이프 문자출력
\''
\""
\t
\n줄바꿈
\|

이스케이프 문자를 무시하고 싶을 때는 원시 문자열 (raw string) r 을 문자열이 시작하는 따옴표 앞에 붙이면 된다.

print('i don\'t know')    # i don't know
print(r'i don\'t know')   # i don\'t know

❓ 정규 표현식 (Regular expression, regex)

정규 표현식은 특정한 문자열의 패턴을 정의하고 같은 패턴의 문자열들을 찾을 때 사용한다. 정의된 특정 패턴과 일치하는 문자열을 찾아 다양한 처리를 할 수 있다.

파이썬에서는 표준 라이브러리 re 모듈을 불러와 정규 표현식을 사용할 수 있다.

import re

이때 찾고자 하는 특정 패턴을 정의하는 과정을 컴파일(complie) 이라고 한다. complie 함수를 통해 특정 패턴을 컴파일한 후 패턴 객체를 리턴할 수 있다.

다음의 특수문자(메타문자) 를 통해 다양한 패턴을 만들 수 있다.

  • [] : 문자
  • - : 범위
  • . : 문자 1개
  • ? : 0회 또는 1회 반복
  • * : 0회 이상 반복
  • + : 1회 이상 반복
  • {m} : 특정 개수의 문자, 숫자
  • {m,n} : 특정 개수 범위의 문자, 숫자
  • ^ : [] 앞에 붙이면 특정 문자 범위로 시작하는지 판단, [] 안에 넣으면 특정 문자 범위를 제외
  • $ : 특정 문자 범위로 끝나는지 판단
  • \ : 정규 표현식에서 사용하는 문자를 그대로 표현 할때 앞에 붙임
  • \d : 숫자, [0-9] 와 같음
  • \D : 숫자를 제외한 모든 문자, [^0-9] 와 같음
  • \w : 영문 대소문자, 숫자, 밑줄 문자, [a-zA-Z0-9_] 와 같음
  • \W : 영문 대소문자, 숫자, 밑줄 문자를 제외한 모든 문자, [^a-zA-Z0-9_] 와 같음.
  • \s : 공백 문자
  • \S : 비공백 문자
  • \b : 단어 경계
  • \B : 비단어 경계

특정 패턴을 만들어 패턴 객체를 컴파일 했으면 패턴 객체를 활용하여 여러 메소드를 사용할 수 있다. 다음은 많이 사용되는 메소드들이다.

  • search() : 일치하는 패턴 찾아서 매치 객체로 반환
  • match() : 패턴이 처음부터 일치하는 대상을 찾아서 매치 객체로 반환
  • findall() : 일치하는 모든 패턴 찾아서 리스트에 담아서 반환
  • split() : 패턴으로 나눔
  • sub() : 일치하는 패턴으로 대체
  • group(그룹) : 그룹에 매칭된 문자열 반환

📁 파일과 디렉토리

파이썬을 통해 컴퓨터 내 저장된 파일을 읽거나, 수정하거나, 데이터를 파일로 저장 가능하다. 그러기위해서는 open() 함수를 통해 파일을 열고 객체로 만들어야한다. 파일을 열어 여러 작업을 한 후에는 close() 를 통해 파일을 닫아야한다.(필수!)

파일객체 = open(파일이름, 파일모드)    # 파일 열기
파일객체.close()                       # 파일 객체 닫기

파일을 열때 사용하는 여러 파일모드와 파일을 열고 사용할 수 있는 여러 파일 메소드 들에 대해 Python Master 풀잎을 통해 학습하였다.
자세한 내용은 AIFFEL Python Master 핵심정리 #03 파일 입출력, 함수 에서 !

또한 with 문을 사용하여 파일을 호출하면 자동으로 close 되기 때문에 시스템 리소스의 안정적 사용을 위해 with 문을 사용하는 것을 권장한다.

디렉토리 (Directory)

디렉토리 는 파일이 저장되어 있는 위치이다. 파일을 불러올때 정확한 디렉토리를 알려주어야만 파일이 문제없이 열린다. 또한 경로의 최상위 폴더를 루트 디렉토리 (root directory) 라고 부른다.

파이썬에서 지원하는 디렉토리 관련 라이브러리는 sys, os, glob 가 있다. 이 모듈들을 import 하여 디렉토리에 관련된 여러 작업을 할 수 있다.

여러가지 파일 포맷

CSV 는 Comma Seperated Value 의 약자로, . 각각의 column 을 쉼표로 구분한 파일 형식이다. csv 파일은 pandas 의 DataFrame 와 서로 변환 가능하다. 따라서 데이터 분석을 할때 csv 파일을 DataFrame 으로 변환시켜 편리하게 데이터를 다룰 수 있다.

  • read_csv() : csv 파일을 DataFrame 으로 변경
  • to.csv() : DataFrame 을 csv 파일로 변경

XML 은 Extensible Markup Language 의 약자로, 다목적 마크업 언어이다. 마크업 언어는 태그<>로 이루어졌으며, 인터넷 웹상에서 문서를 교환할 때 이용한다. BeautifulSoup 를 이용해 여러 방법으로 파싱이 가능하다.

JSON 은 JavaScript Object Notation 의 약자로, JavaScript의 데이터 객체 표현 방식이다.

XML 과 JSON 은 웹 API 나 config 데이터를 전송할 때 많이 쓰인다.

profile
🏫 𝑲𝒚𝒖𝒏𝒈 𝑯𝒆𝒆 𝑼𝒏𝒊𝒗. / 👨‍🎓 𝑪𝒐𝒍𝒍𝒆𝒈𝒆 𝒐𝒇 𝑬𝒏𝒈𝒊𝒏𝒆𝒆𝒓𝒊𝒏𝒈
post-custom-banner

0개의 댓글