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

[4팀/이제은] 6차시 파이썬 스터디 - 문자열

알 수 없는 사용자 2023. 4. 28. 18:06

6차시_문자열_강의안.pdf
0.71MB
6차시_문자열_과제.pdf
0.18MB

 

01 문자열의 이해

이번 장에서는 그동안 변수로만 봐왔던 문자열형에 대해 알아보는 장입니다.

> 문자열의 개념

 

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

→ 문자열은 시퀀스 자료형!

 

> 문자열과 메모리 공간

 

<remind>

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

- 1비트는 0과 1만을 표현할 수 있는 크기이다.

- 1바이트 = 8비트이며 2의 8제곱인 256까지의 숫자를 저장할 수 있다.

 

다음과 같이 코드를 통해서 문자열이 저장된 공간의 크기를 눈으로 확인해볼 수 있습니다.

import sys
print(sys.getsizeof("a"), sys.getsizeof("ab"), sys.getsizeof("abc"))

50 51 52

- sys.getsizeof : 특정 변수 또는 값의 메모리 공간을 측정하는 함수

- a, ab, abc의 메모리 크키가 50바이트, 51바이트, 52바이트로 1바이트씩 증가하는 것을 알 수 있다.

→ 영문자 한 글자 당 1바이트의 메모리 공간을 사용한다.

→ 즉, 하나의 문자를 저장하기 위해 저장되는 문자 자체를 제외하고도 그 변수와 관련된 여러 가지 정보, 즉 변수의 저장 위치 등을 위해 49바이트가 필요한 것이다.

 

☝️ 컴퓨터가 1바이트로 문자를 저장하는 방법

Q. 컴퓨터는 문자를 어떻게 저장하고 저장한 값은 어떻게 처리될까요?

A. 우선 컴퓨터는 문자를 직접 텍스트로 인식하지 않고 이진수로 변환하여 저장합니다. 문자는 1바이트, 즉 8비트라고 했으니 2의 8제곱만큼의 공간에 문자에 대한 정보가 저장됩니다. a를 저장한다고 하면 01001011처럼 변환되어 메모리에 저장되는 방식으로 처리되고 있습니다. 

 

이진수로 변환되는 표준 규칙으로는…

- ASCII

- CP949

- MS949

- UTF-8

등이 있습니다. 그리고 이러한 규칙을 인코딩이라고 합니다.

이러한 규칙을 이용하여 숫자와 문자를 맵핑하는 것이 바로 운영체제와 인터프리터의 역할 중 하나입니다.

 

 

> 문자열의 인덱싱과 슬라이싱

 

문자열과 리스트는 모두 시퀀스 자료형!

→ 즉, 문자열은 리스트와 특징이 거의 같은 자료형입니다.

→ 따라서 문자열 또한 인덱싱과 슬라이싱이 가능합니다!

 

<인덱싱>

a = "abcde"
print(a[0], a[4])
print(a[-1], a[-3])

 

<슬라이싱>

a = "Seoul Woman's University"
print(a[0:5], a[14:])
print(a[:])
print(a[-30:30])
print(a[::2], "AND", a[::-1])

 

 

> 문자열의 연산

 

문자열도 다른 변수와 마찬가지로 연산이 가능합니다.

기본적으로 리스트의 연산과 같습니다!

 

<연산>

a = "poppy"
b = "love"
print(a + " " + b)
print(a * 2 + " " + b * 2)  #파피파피 럽럽

if 'y' in a: print(a)
else: print(b)

3번째 줄 : 문자열의 덧셈 연산, 붙이기

5번째 줄 : 문자열의 곱셈 연산, 두 번 출력하기

7번째 줄 : 문자열의 in 연산, 특정 문자가 특정 변수에 들어있는지 확인

 

 

> 문자열 함수

 

- 문자열을 다룰 때 유용한 문자열 함수들

- 주요 함수 실습

 

<upper / lower>

title = "SWU X LeeJeEun"
print(title.upper())
print(title.lower())

<title>

title = "SWU X LeeJeEun"
print(title.title())
print(title.capitalize())

title( ) : 각 단어의 앞글자만 대문자로 변경

capitalize( ) : 첫 번째 글자만 대문자로 변경

 

<count, isdigit, startswitch>

title = "SWU X LeeJeEun"
print(title.count("e"))
print(title.upper().count("e"))
print(title.isdigit())  # 해당 문자열이 숫자인가? 
print(title.startswith("e"))  # 해당 문자열로 시작하는가?

 

- 파이썬의 특수 문자 

문자열을 표현할 때 “ “ 나 ‘ ‘ 를 사용하기 때문에, 문자열 안에 해당 문자가 포함되면 사용하기 어려울 때가 있다.

→ ‘ , “를 사용할 경우 문자열이 닫히지 않았다고 판단하고 오류로 출력할 수도 있기 때문이다. ex) It’s OK

 

🧡 가장 쉬운 해결 방법 : 작은따옴표가 들어간 문자열은 큰따옴표로 선언하고 큰따옴표가 들어간 문자열은 작은따옴표로 선언하는 것 ex) a = “It’s OK”

 

💛 다른 방법 : 파이썬의 특수문자 기능 사용

ex) a = ‘It\’s OK’

 

 


 

02 문자열 서식 지정

문자열의 형식을 지정하여 출력하는 서식 지정에 대해 배워봅시다!

> 서식 지정의 개념

 

print 함수는-

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

그러나 함수를 사용하다 보면 특정한 형식으로 맞춰서 결과를 출력해야 하는 경우가 발생합니다.

ex) 통화 단위, 세 자리 숫자 단위로 띄어쓰기, % 출력 등

 

서식 지정 : 이렇게 다양한 형식에 맞추어 출력하는 것을 서식 지정이라고 합니다.

 

 

> % 서식과 format( ) 함수

print(1, 2, 3)
print("a" + " " + "b" + " " + "c")
print("%d %d %d" % (1, 2, 3))
print("{} {} {}".format("a", "b", "c"))

%를 이용하는 % 서식과 { }과 .format을 사용하는 format( ) 함수가 있습니다.

(앞에 입출력에서 상세하게 설명했던 내용이니 간략하게 설명하고 넘어가도록 하겠습니다…😊)

 

- % 서식

  • 형태 : ‘%자료형 % (값)’
  • 서식 종류

 

- format( ) 함수

  • 형태 : ‘{자료형}’.format(인수)
  • % 서식과 달리 자료형을 바로 지정해주지 않고 순서대로 변수가 할당된다는 장점이 있습니다.
print
("Product: {0}, Price per unit: {1:.2f}".format("Apple", 5.243))

.2f : 소수점 둘째 자리까지

 

 

> 패딩

 

파이썬의 서식 저정 기능에는 여유 공간을 지정하여 글자 배열을 맞추고, 소수점 자릿수를 맞추는 패딩(padding) 기능이 있습니다.

 

- % 서식의 패딩

print("%10d" % 12)
print("%-10d" % 12)
print("%10.3f" % 5.94343)
print("%10.2f" % 5.94343)
print("%-10.2f" % 5.94343)

이처럼 공간을 먼저 확보하고 출력이 됩니다. 공백을 시각화한다면 다음과 같을 것입니다.

→ 소수점도 자릿수에 포함됩니다.

 

 

- format() 함수의 패딩

print("{0:>10s}".format("Apple"))
print("{0:<10s}".format("Apple"))

< 는 (좌측을 가리키니)좌측 정렬을, >는 (우측을 가리키니)우측 정렬을 나타냅니다.

즉, {0:>10s}는 {0}에게 공간 10자리를 확보하고 우측정렬 하라는 의미입니다.

 

실수에서도 자릿수와 소수점 자릿수를 지정할 수 있습니다.

print("{0}\n{1:>10.5f}".format("Apple", 5.243))
print("{0}\n{1:<10.5f}".format("Apple", 5.243))

{1:>10.5f} 는 {1}에게 10자리를 확보하고 소수점 5번째 자리까지 우측정렬하라는 의미입니다.