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번째 자리까지 우측정렬하라는 의미입니다.
'스터디 > 파이썬 스터디 강의자료' 카테고리의 다른 글
[3팀/김규리] 6차시 파이썬 스터디 - 문자열 (0) | 2023.04.30 |
---|---|
[4팀/김민혜] 6차시 파이썬 스터디 - 문자열 (0) | 2023.04.28 |
[4팀/김민혜] 5차시 파이썬 스터디 - 함수 (0) | 2023.04.13 |
[1팀/허서원] 5차시 파이썬 스터디 - 함수 (0) | 2023.04.06 |
[4팀/이제은] 5차시 파이썬 스터디 - 함수 (0) | 2023.04.06 |