오늘 학습한 내용 (Fundamental Stage)
노드 5. 텍스트의 다양한 변신 (문자열, 파일 다루기)

★ 실습에는 다음의 데이터가 필요하다. 이 명령어를 Cloud Shell에 입력하면 된다.

<5.1~5.3절>

  1. 우리 주변에는 수많은 텍스트 데이터가 존재한다.
  2. 파이썬에서의 텍스트 데이터는 보통 '', ""로 묶인 일련의 문자를 말한다.
  3. 리스트를 사용해 배열로 저장할 수도 있고, 따옴표를 이용해 문자열 형태로 저장할 수도 있다.
  4. 이렇듯 지금까지의 모든 데이터는 변수에 저장하였다.
  5. 변수에 할당된 데이터들은 컴퓨터의 주기억장치인 RAM 메모리에 저장되어 있다.
  6. 인코딩, 디코딩은 모두 문자열 데이터가 RAM에 저장될 때 컴퓨터 내부에서 일어나는 일이다.
  7. 컴퓨터 세상에서는 이진 데이터(Binary data)인 0과 1로 표현되므로, 데이터도 마찬가지로 0과 1로 표현된다.
  8. 바이트(Byte) : 컴퓨터의 기본 저장단위로 1Byte 당 8Bit로 계산된다.
  9. 1Byte에는 2의 (비트 수=8)제곱만큼의 고유값을 저장할 수 있다.
  10. 인코딩 : 문자열을 Byte로 변환하는 과정
  11. 디코딩 : Byte를 문자열로 변환하는 과정
  12. 국제표준기구 ISO에서는 유니코드라 하여 전 세계의 문자를 모두 표시할 수 있는 표준코드를 제정하였다.
  13. 유니코드는 단일 버전으로 존재한다.
  14. 흔히 들어본 UTF-8, UTF-16 등은 유니코드로 정의되는 텍스트를 메모리에 인코딩하는 방식으로, 유니코드의 버전과는 상관이 없다.
  15. 파이썬에서는 ord(), chr() 구문을 이용해 문자열을 유니코드 숫자로, 유니코드 숫자를 문자로 반환하는 방법이 존재한다.
  16. 파이썬의 모든 문자열은 유니코드로 표현가능하다.
  17. 유니코드 관리에 관해서는 파이썬 2보다 파이썬 3에서 더욱 효과적이다. 파이썬 3에서는 문자열이 모두 유니코드로 표현가능하므로 해당 텍스트의 인코딩 or 디코딩 여부만 확인하면 된다.

QM1. str2는 명확한 문자열이므로 str 클래스임은 이해가 된다. 그러나 따옴표 바깥에 문자가 존재하는데, str1은 b가, str3는 u가 앞에 있다. 여기서 str1은 byte의 b이고, str3는 unicode의 u인가?

  1. 다음 상황을 개진하기 위한 문자로 이스케이프 문자를 활용할 수 있다.
  2. 이스케이프 문자 : 직접 입력할 수 없는 일부 문자를 문자열에 포함시킬 수 있는 일종의 특수 문자 개념으로 사용한다.
  3. (★★) 이스케이프 문자의 종류
  4. 이스케이프 문자 사용 예시
  5. 이스케이프 문자를 무시하는 원시 문자열(raw string) 사용 방법은 따옴표 앞에 영문소문자 r을 붙이면 된다.

    ▼▼▼ 아래 내용들은 모두 링크를 참조하여 이해해 보자. ▼▼▼
    [https://ddolcat.tistory.com/687]
  6. startswith 구문 : 해당 문자열이 특정 문자로 시작되는지 여부를 확인하는 구문
  7. endswith 구문 : 해당 문자열이 특정 문자로 끝나는지 여부를 확인하는 구문

QM2. 링크를 읽어 보았는데, startswith와 endswith에서 문자에 대한 여부를 확인한 뒤에 꼭 True와 False 중에 하나의 값으로 리턴해야 하나요? 혹시 AIFFEL 공부하시는 분들이라면 노드에 나와 있는 예제 코드처럼 조건에 맞는 문자열을 직접 찾아서 나열하기도 하는데..?

  1. 다듬기(Trimming) : 프로그래밍에서 인식하는 공백 문자의 종류
  2. strip() 구문 : 파이썬에서 공백 문자를 제거하는 메서드(Method)
  3. 알파벳으로 구성된 문자열에서 대소문자를 쉽게 변환해주는 메서드들
  4. 만약 알파벳으로 이루어진 문장에 대소문자가 섞여 있다 하더라도, 위의 3가지 코드를 이용하면 모두 대문자 혹은 소문자, 첫 글자만을 대문자로 변환한 문자열을 만들 수 있다.
  5. isX 형태의 메서드들 (Boolean 값으로 반환)
  6. isalnum() 구문에 대한 테스트 결과, 알파벳 문자와 숫자가 모두 포함되지 않더라도 둘 중 하나만 포함되어도 isalnum() 구문은 True로 반환됨을 확인함.
  7. split() : 리스트를 반환하며, 하나의 문자열을 구분자를 기준으로 나눈다.
  8. join() : 문자열을 반환하며, 각각의 원소들을 모아 하나의 문자열로 합쳐준다.
  9. split(), join()에 대한 사용 예시
  10. 위의 코드 결과처럼 split() 구문에서는 구분자를 지정하지 않을 경우 오류가 발생한다. 단, join() 구문에서는 ""와 같이 구분자를 지정하지 않아도 세 문자열이 붙어서 정상적으로 합쳐진 문자열이 출력된다. 이 점에 유의해야 한다.
  11. replace() : replace(a, b) 형태로 사용하며 문자열 내 문자열 a를 b로 변환하여 재출력한다.
  12. 가변객체(mutable object) : 객체 생성 후 객체의 값을 변경할 수 있다. 대표적인 객체로 list, set, dict 등이 있다.
  13. 불변객체(immutable object) : 객체 생성 후 객체의 값을 변경할 수 없다. 대표적인 객체로 int, float, complex, bool, string, tuple 등이 있다.

QM3. 아래 링크의 내용을 확인하고 궁금한 점을 발견해 보는 것도 좋다.
[https://webnautes.tistory.com/1181][https://ledgku.tistory.com/54]

  1. (비교분석) 다음 두 코드블록의 차이를 비교해 보자.

    → 각 코드의 네 번째 줄에 차이가 있다. sent의 문자열과 sent.upper()의 문자열은 엄연히 다르다. 따라서 sent를 출력하면 sent의 문자열이 출력되므로 위의 코드블록은 변화가 없어 고유값 id 또한 변하지 않는다. 반면 아래의 코드블록은 sent.upper()를 실행한 결과를 sent에 할당하였으므로 sent는 upper()가 적용된 문자열로 출력되어 고유값 id도 변하게 된다.

<5.4절>

  1. 세상의 데이터는 방대하고, 패턴화된 문자열도 굉장히 많다.
  2. 정규 표현식(regular expression) : 대부분의 운영체제, 프로그래밍 언어, 텍스트 편집 프로그램 등에 지원되고 있는 표현식으로 (A)찾고자 하는 문자열을 정의하고 (B)기존의 문자열과의 일치성을 비교하고 처리하는 데 사용한다. 정규 표현식은 문자열 메서드의 단점을 커버한다.
  3. (A), (B)에 대하여 (A)는 컴파일(compile), (B)는 컴파일 객체 활용 및 검색을 의미한다.
  4. 정규 표현식을 활용하려는 목적으로 re.compile()을 반드시 명시적으로 호출할 필요는 없다.
  5. (B)에서 호출 가능한 메소드와 속성의 종류
  6. match() 실제로 활용하기
  7. 특수문자 또는 메타문자를 통틀어 이르는 '패턴' : 정규 표현식을 강력하게 해주는 도구

> QM4. 제가 생각했던 첫번째 문제의 답은 '1993', '1995' 였고, 두번째 문제의 답은 지금 코드의 구분선 아래에 010-111-1111이 더 추가된 결과를 답으로 생각했습니다. 각각의 결과가 어떻게 해서 나오는지 이해하시는 분이 계신다면 같이 해결했으면 해서 주피터 노트북에서 작업해서 올렸습니다. 우리 같이 풀어봐요! 아, 그리고 첫번째 문제에서 re.compile의 괄호 안의 의미가 정확히 무엇인지를 알면 금방 코드를 이해할 수 있을 것 같기도 해요! :)

<5.5~5.7절>

  1. 사용자의 중요 정보는 매우 소중해서 매번 휘발되어 사라지면 많이 곤란할 것이다.
  2. 이러한 데이터를 영구 보존하기 위한 차원에서 보조기억장치 ROM에 데이터를 저장하는데, 이때 저장되는 것을 파일이라 한다.
  3. 파일 관련 메서드
  4. 폴더를 다른 말로 '디렉토리'라고도 부르기도 한다.
  5. 리눅스에서 실행 파일을 보관하는 폴더 : /bin
  6. 리눅스 명령어 정리 링크 : [https://itholic.github.io/linux-basic-command/]
  7. 파이썬에서 지원하는 디렉토리 관련 표준 라이브러리 : sys, os, glob
  8. 파이썬의 모듈과 패키지
  9. 파이썬의 모듈과 패키지 관련 용어
  10. 파이썬의 모듈과 패키지 관련 함수

<5.8~5.10절>

  1. CSV(Comma Seperated Value) : 각각의 column을 쉼표(,)로 구분한 파일
  2. XML(Extensible Markup Language) : 다목적 마크업 언어로, 웹 상에서 문서나 내용을 교환할 때 이용한다. API에서 데이터를 요청하고 저장할 때 데이터 교환에 사용되는 형식이다.
  3. XML은 요소(Element)들로 이루어져 있으며 속성(Attribute)값을 가질 수도 있다.
  4. 마크업 언어는 태그(Tag)로 이루어지는 언어이고 부모-자식 간 처럼 계층적 구조를 가진다.
  5. JSON(Javascript Object Notation) : 웹 언어인 Javascript의 데이터 객체 표현 방식이다.
  6. JSON은 파이썬의 딕셔너리 자료형의 구조와 유사하다.
  7. JSON의 장점1 : CSV와는 달리 데이터 표현이 유연하다.
  8. JSON의 장점2 : XML과는 달리 파일의 읽고 쓰기가 용이하다.

오늘 학습한 내용 (Python Master)

  1. 22.2 리스트의 할당과 복사

  2. 22.3 반복문으로 리스트 요소 모두 출력하기

  3. 22.4 리스트의 최솟값/최댓값, 총합 구하기

profile
날개를 달고 날아오르자!

0개의 댓글