스터디/파이썬 스터디 강의자료

[1팀/허서원] 6차시 파이썬 스터디 - 문자열

허서원 2023. 5. 4. 01:55

참고도서 - 데이터 과학을 위한 파이썬 프로그래밍

 

6차시_문자열_과제.pdf
0.20MB
6차시_문자열_강의안.pdf
0.95MB
6차시_문자열_과제답안.pdf
0.22MB

문자열


학습 목표

  • 문자열의 개념과 메모리 공간에 대해 이해한다.
  • 문자열의 인덱싱과 슬라이싱에 대해 학습한다.
  • 문자열의 연산과 문자열 함수에 대해 알아본다.

문자열의 형식을 정하여 출력하는 서식 지정에 대해 이해한다.


01 문자열의 이해

  • 문자열(string)의 개념

애플리케이션을 만들거나 데이터를 분석할 때 매우 중요하게 다루어지는 자료형 중 하나 문자열을 이해하기 위해서는 문자열의 특징을 이해해야 한다.

먼저 문자열은 시퀀스 자료형 (sequence data type)이다.

시퀀스 자료형은 리스트와 같이 데이터를 순차적으로 메모리에 저장하는 형식의 데이터

  • 문자열과 메모리 공간

일반적으로 문자열을 저장하기 위해서는 영문자 한 글자당 1바이트의 메모리 공간을 사용

컴퓨터는 이진수만 사용하므로 컴퓨터가 숫자를 인식하는 최소 단위는 1비트이다.

(1 비트는 0과 1 만을 표현할 수 있는 크기)

1바이트는 8비트와 크기가 같으며, 총 2의 8승 크기인 256까지의 숫자를 저장할 수 있다.

또한 컴퓨터는 문자를 직접 인식하지 않는다.

ex) 컴퓨터에 a라고 알려줘도 컴퓨터는 정확히 a라는 텍스트로 인식하는 것이 아니다.

대신 컴퓨터는 이 정보를 이진수로 변환하여 저장한다. → 01001011처럼 변환되어 메모리에 저장

우리 눈에는 a로 보이지만 컴퓨터 메모리와 CPU에는 01001011같 숫자들이 처리되고 있음

 

컴퓨터 공학자들은 문자를 처리하기 위해 이진수로 변환되는 표준 규칙을 만들었음.

대표적으로 ASCII (American Standard Code for information Interchange)가 있고, 윈도우에서 한글 처리를 위해 많이 쓰는 CP949 또는 MS949, UTF-8 등이 있다.

→ 이러한 규칙을 인코딩 encoding이라고 한다.

  1. 컴퓨터는 문자를 직접 인식하지 못한다.
  2. 컴퓨터는 문자를 숫자로 변환하여 인식한다.
  3. 사람들은 문자를 숫자로 변환하기 위한 규칙을 만들었다. 일반적으로 이 규칙은 1개의 영문자를 1바이트. 즉 2의 8승 정도의 공간에 저장한다.

⇒ 이 규칙을 이용하여 숫자와 문자를 맵핑하는 것이 운영체제와 인터프리터의 역할 중 하나

 

  • 문자열의 인덱싱(indexing)

문자열은 시퀀스 자료형, (시퀀스 자료형은 리스트와 특징이 거의 같은 자료형이다.) → 문자열의 특징 중 하나. 인덱싱

리스트처럼 글자 하나하나가 상대적인 주소를 가짐. 이 주소를 사용해 저장된 값을 가져오는 인덱싱을 사용할 수 있다.

  • 문자열의 슬라이싱(slicing)

문자열의 주소값을 이용해 문자열의 부분값을 추출해내는 기법 (리스트)

기본적으로 문자열 슬라이싱 기법과 리스트 슬라이싱 사용법이 완전히 같음

 

  • 문자열의 연산

문자열도 일반적인 변수와 마찬가지로 연산이 가능하다. (리스트 연산과 같음)

ex) 문자열 변수 ‘a’와 정수형 2를 ‘a+2’와 같이 연산은 안 되지만 ‘a*2’와 같은 연산은 가능

 

1. 문자열의 덧셈 연산

덧셈 연산은 모든 변수가 문자열일 경우 텍스트 붙이기가 이루어진다.

🙌 여기서 자주 하는 실수!!

print( ) 함수에서 정수형과 문자열을 같이 보여주려고 할 때 발생한다.

→ 문자열과 정수형의 연산으로 인식하여 덧셈 연산이 실행되지 않는 코드

 

2. 문자열의 곱셈 연산

a * 2를 풀면 a + a의 연산이므로, 같은 글자가 두 번 출력

 

3. 포함 여부를 확인하는 in 연산

: if문과 함께 사용하는데, 특정 문자가 특정 변수에 들어있는지 확인하는 연산

 

  • 문자열 함수

문자열 함수는 문자열을 다룰 때 사용하기 유용한 함수

대표적으로 len() 함수. 텍스트의 길이를 반환한다.

문자열 함수를 사용하는 방법은 문자열 변수 다음에 ‘.문자열 함수명’을 입력하면 된다.

 

  • 주요 문자열 함수
    • 문자열을 대문자로 변환하는 upper() 함수 / 소문자로 변환하는 lower() 함수
    • 제목과 관련된 함수
      • title() 함수: 각 단어의 앞글자만 대문자로 바꾸는 함수
      • capitalize() 함수: 첫 번째 글자만 대문자로 바꾸는 함수

🙌 문자열 표현과 특수문자

파이썬에서 문자열을 표현할 때 작은따옴표나 큰따옴표를 사용한다.

하지만 I’m OK와 같이 아포스트로피(')가 문장에 들어가면 작은따옴표를 사용하기 어렵다.

만약 작은따옴표로 문자열을 표현면 인터프리터는 이 문자가 제대로 닫히지 않았다고 판단

또 다른 문제로는 줄바꿈에 대한 것이다. 이러한 경우에도 문자열로 표현하기 어렵다.

I’m OK

How about you?

→ 이러한 문제를 해결하기 위해 파이썬에서는 여러 가지 기능을 지원한다.

문자열 자체에 작은따옴표나 큰따옴표가 들어가 있는 경우.

  1. 작은따옴표가 들어간 문자열은 큰따옴표로 선언 (큰따옴표 → 작은따옴표) 
  2. 파이썬의 특수문자 기능을 사용

이 특수문자는 문자열에서 표현하기 어려운 여러 문자를 표현할 수 있도록 도와준다.

기본적으로 역슬래시(\)기호를 사용! (윈도우에서는 원 표시)

02 문자열 서식 지정

  • 서식 지정(formating)의 개념

print( ) 함수는 기본적으로 변수 또는 값을 콤마(,)로 띄어쓰기 하여 출력한다.

하지만 print() 함수를 사용하다 특정한 형식에 맞추어 결과를 출력해야 하는 경우도 발생

ex) 엑셀 - 통화 단위. 세 자리 숫자 단위로 띄어쓰기, % 출력 등 다양한 형식에 맞추어 출력

⇒ 서식 지정

  • % 서식과 format() 함수

문자열의 서식을 설정할 때 print() 함수는 기본 출력 형식 외 % 서식과 format()함수를 사용

서식을 지정했을 때 장점

  1. 데이터와 출력 형식을 분류할 수 있다.
    같은 내용을 여러 번 반복하기 위해 기존 print()문에 스페이스바를 이용해 띄어쓰기를 넣어서 + 기호로 문자열 형태를 붙여주는 것보다 시각적으로 훨씬 이해하기 쉽게 코드를 작성
  2. 데이터를 형식에 따라 다르게 표현할 수 있다.
    서식 지정 기능은 각 변수의 자료형에 맞게 서로 다르게 지정할 수 있다.
    • %서식
      • 출력 양식
        ‘%자료형 % (값)’

→ %d는 정수형의 변수를, %s는 문자열의 변수를 할당받을 수 있다.

즉, %d에는 ‘3’이. %s에는 ‘five’가 대응된다.

변수의 자료형에 따라 다양하게 설정할 수 있다.

  • format() 함수
    • 서식 지정 형태
      "{자료형}”.format(인수)
  • 패딩(padding)
    서식 지정 기능 중 여유 공간을 지정하여 글자 배열을 맞추고 소수점 자릿수를 맞추는 기능
    % 서식과 format() 함수 모두 패딩 기능을 제공!

 

🙌 네이밍(naming)

변수명을 서식에 할당할 수 있는 기능

기존 번호나 순서대로 자료형에 대응이 아닌 특정 변수명을 사용하여 출력값에 직접 할당

특히 한 번에 출력해야 하는 변수가 많을 때 변수의 순서를 헷갈리지 않고 사용할 수 있다!