문자열, 파일 사용법

매일 공부(ML)·2021년 10월 3일
0

CS 

목록 보기
7/33

목차

문자열로 저장

  1. 인(디) 코딩

  2. 문자열 다루기

  3. 정규 표현식

파일과 디렉토리

  1. 파일

  2. 디렉토리

  3. 모듈과 패키지

여러 파일 포맷

1.CSV

2.XML

3.JSON

문자열 저장

  1. 기본 단위
    -바이트(byte): 컴퓨터의 기본 저장 단위
    -유니코드: 최상위 문자

  2. 인코딩 과 디코딩

    i)인코딩
    : 문자열->바이트(사람언어-> 컴퓨터 언어)
    ex)
    ord(): 문자-> 유니숫자 변환

    ii)디코딩

    :바이트-->문자열(컴퓨터-> 사람)
    ex)
    chr(): 유니숫자 -> 문자 변환

  1. 문자열 기능

\' :홑따옴표' 출력

\" :겹따옴표" 출력

\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(): 띄어쓰기로 표기되는 공백문자 만드는 함수.

  • space: 한 칸 띄어쓰기
  • tab(\t): 네 칸 혹은 두 칸 띄어쓰기
  • 줄 바꿈: 줄 바꿈
  • 라인피드(개행): 줄 바꿈
  • 캐리지 리턴(\r): 커서를 맨 앞으로 이동시키는 것
    strip(): 공백문자 제거 함수
#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():첫 글자만 대문자로 변환

IsX

  • 문자열의 구성에 따라 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)
    -객체를 생성한 후 값 수정
    -변수는 값이 수정된 객체

    • 수정된 값 = 원래 값
      ex)list, set, dict
  • 불변객체(immutable object)
    -객체를 생성한 후 객체의 값 수정X

    • 변수는 해당 값을 가진 다른 객체를 가리킨다.
    • 수정된 값 != 원래 값
      EX) int, float, complex, bool, string, tuple,
      frozen set
  • 객체비교
    -id(object): 객체를 위한 고유한 상수 리턴
    -is

    • 변수 is 변수
    • 변수 is 객체
    • 객체 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() 메소드로 전달

  • 패턴: 특수문자, 메타문자
    [ ] : 문자
  • : 범위
    . : 하나의 문자
    ? : 0회 또는 1회 반복
  • : 0회 이상 반복
  • : 1회 이상 반복
    {m, n} : m ~ n
    \d : 숫자
    \D : 비숫자
    \w : 알파벳 문자
    \W : 비알파벳 문자
    \s : 공백 문자
    \S : 비공백 문자
    \b : 단어 경계
    \B : 빈 단어 경계
    훑어만 보아도 이 많은 것들

파일과 디렉토리

  1. 파일

    i)메소드

    f.read() : 파일을 읽는다.

    f.readline() : 파일을 한 줄씩 읽는다.

    f.readlines() : 파일 안의 모든 줄을 읽어 그 값을 리스트로 반환

    f.write(str) : 파일에 쓴다. 문자열 타입을 인자로 받는다.

    f.writelines(str) : 파일에 인자를 한 줄씩 쓴다.

    f.close() : 파일을 닫는다.

    f.seek(offset) : 새 파일의 위치를 찾는다

  2. 디렉토리(파일이 저장되는 위치)

-표준: sys, os, glob
-개념

  1. 모듈 과 패키지

모듈(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. CSV
    csv 파일은 주피터 실행 경로에 저장되어 있을 것입니다.

파일을 검색 해 열어 보시면 각각의 데이터가 쉼표(,)로

구분돼 있는 것을 확인하실 수 있을 거예요.

1-1) CSV파일과 Pandas

판다스(pandas)의 DataFrame은 to_csv 메소드를 지원합니다.

이 메소드를 이용하면 csv 파일로 쉽게 저장할 수 있어요.

데이터를 준비한 뒤 판다스를 활용해 csv 파일로 저장해 보겠습니다.

1-2) CSV파일과 DataFrame

csv file ---------------> DataFrame
(pd.read_csv())
<---------------
(df.to_csv())

  1. XML

<>로 구분된 언어

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)파일 읽기

profile
성장을 도울 아카이빙 블로그

0개의 댓글