참고
참고 자료는 점프 투 파이썬으로 선택했습니다.
※스스로를 위해 정리한 참고 자료입니다.

파이썬 프로그래밍의 기초, 자료형

  • 어떤 프로그래밍 언어이든 그 언어의 자료형을 알고 이해할 수 있다면 이미 그 언어의 절반을 터득한 것이나 다름없다.
  • 자료형이란 프로그래밍을 할 때 쓰이는 숫자, 문자열 등과 같이 자료 형태로 사용하는 모든 것을 뜻한다.

숫자형

숫자형(Number)이란 숫자 형태로 이루어진 자료형으로, 우리가 이미 잘 알고 있는 것이다.

  • 123과 같은 정수, 12.34 같은 실수, 8진수나 16진수도 있다.

다음 표는 파이썬에서 숫자를 어떻게 사용하는지 간략하게 보여준다.

항목파이썬 사용 예
정수123,-345,0
실수123.45, -123.45, 3.4e10
8진수0o34, 0o25
16진수0x2A, 0xFF

숫자형은 어떻게 만들고 사용할까?

ㅁ 정수형

  • 정수형(integer)이란 말 그대로 정수를 뜻하는 자료형을 말한다.
  • 다음은 양의 정수와 음의 정수, 숫자 0을 변수 a에 대입하는 예이다.
>>> a = 123
>>> a = -178
>>> a = 0

ㅁ 실수형

  • 파이썬에서 실수형(floating-point)은 소수점이 포함된 숫자를 말한다.
  • 다음은 실수를 변수 a에 대입하는 예이다. 일반적으로 볼 수 있는 실수형의 소수점 표현 방식이다.
>>> a = 1.2
>>> a = -3.45
  • 다음은 '컴퓨터식 지수 표현 방식'으로, 파이썬에서는 4.24e10 또는 4.24E10 처럼 표현한다.(e와 E 둘 중 어느 것을 사용해도 가능!)
>>> a = 4.24E10
>>> a = 4.24e-10
  • 여기서 4.24E10은 4.2410104.24 * 10^{10} , 4.24e-10은 4.2410104.24 * 10^{-10}을 의미한다.

ㅁ 8진수와 16진수

  • 8진수(octal)를 만들기 위해서는 숫자가 0o 또는 0O(숫자0 + 알파벳 소문자o 또는 ㄷ문자 O)으로 시작하면 된다.
>>> a = 0o177
>>> print(a)
127
1×82+7×81+7=1271×8^2+7×8^1+7=127
  • 16진수(hexadecimal)를 만들기 위해서는 0x로 시작하면 된다.
>>> a = 0x8ff
>>> b = 0xABC
>>> print(b)
2748
10×162+11×161+12=274810×16^2+11×16^1+12=2748

숫자형을 활용하기 위한 연산자

ㅁ 사칙 연산

>>> a = 3
>>> b = 4
>>> a + b
7
>>> a - b
-1
>>> a * b
12
>>> a / b
0.75

ㅁ x의 y 제곱을 나타내는 **연산자

  • 사칙연산 다음으로는 ** 연산자가 있다.
  • 이 연산자는 x ** y 처럼 사용했을 때 $xyx^y 값을 나타낸다.
>>> a = 3
>>> b = 4
>>> a ** b
81

ㅁ 나눗셈 후 나머지를 리턴하는 %연산자

>>> 7 % 3
1
>>> 3 % 7
3

ㅁ 나눗셈 후 몫을 리턴하는 //연산자

>>> 7 / 4  # 그냥 나누기
1.75
7 // 4
1

ㅁ 복합 연산자

  • 복합 연산자는 앞서 살펴본 +,- 와 같은 산술 연산자와 대입 연산자(=)를 합쳐 놓은 것이다.
>>> a = 1
>>> a = a + 1 # a + 1로 계산된 값을 다시 a에 대입한다.
>>> print(a)
2
>>> a += 1 #a = a + 1 과 같은 표현이다.

복합 연산자에는 다음과 같은 것들이 있다.

  • +=
  • -=
  • *=
  • /=
  • //=
  • %=
  • **=

문자열 자료형

문자열(string)이란 연속된 문자들의 나열을 말한다.

  • "123" "a" <- 큰따옴표로 둘러싸여 있으면 모두 문자열이라고 보면 된다.

문자열 만드는 방법 4가지

ㅁ 큰따옴표로 양쪽 둘러싸기

  • "Hello World"

ㅁ 작은따옴표로 양쪽 둘러싸기

  • 'Hello World'

ㅁ 큰따옴표 3개를 연속으로 써서 양쪽 둘러싸기

  • """Hello World"""

ㅁ 작은따옴표 3개를 연속으로 써서 양쪽 둘러싸기

  • '''Hello World'''

ㅁ 문자열에 작은따옴표 포함하기

  • 큰따옴표 안에 들어 있는 작은따옴표는 문자열을 나타내기 위한 기호로 인식되지 않는다.
>>> A = "Hello' World"
>>> A
Hello' World
  • 프롬프트에 A를 입력해 결과를 확인해 보면 변수에 저장된 문자열이 그대로 출력된다.
  • 반대로 큰따옴표를 문자열에 포함하고 싶으면 작은따옴표로 둘러싸면 된다.

ㅁ 역슬래시를 사용해서 작은따옴표와 큰따옴표를 문자열에 포함하기

>>> A = 'Hel\'lo World'
>>> B = "Hel\"lo World"
>>> A
>>> B
Hel\'lo World
Hel\"lo World
  • 역슬래시(/)를 작은따옴표나 큰따옴표 앞에 삽입하면 역슬래시 뒤의 작은따옴표나 큰따옴표는 문자열을 둘러싸는 기호의 의미가 아니라 '나 " 자체를 뜻하게 된다.

ㅁ 여러 줄인 문자열을 변수에 대입하고 싶을 때

  1. 줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기

    Hello
    world

>>> A = "Hello\n World"
  • 위 예제처럼 줄바꿈 문자인 \n을 삽입하는 방법이 있지만, 읽기가 불편하고 줄이 길어지는 단점이 있다.
  1. 연속된 작은따옴표 3개 또는 큰따옴표 3개 사용하기
    1번의 방법의 단점을 극복하기 위해 파이썬에서는 다음과 같이 작은따옴표 3개(''') 또는 큰따옴표 3개(""")를 사용한다.
>>> A = '''
... Hello
... World
... '''
  • 작은따옴표 3개를 사용한 경우
>>> A = """
... Hello
... World
... """
  • 큰따옴표 3개를 사용한 경우
>>> print(A)
Hello
World
  • 위 코드는 출력 결과를 나타낸다.

이스케이프 코드란?

문자열 예제에서 여러 줄의 문장을 처리할 때 역슬래시 문자와 소문자 n을 조합한 \n 이스케이프 코드를 사용했다.
이스케이프(escape)코드란 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'을 말한다.
주로 출력물을 보기 좋게 정렬하는 용도로 사용한다.
몇 가지 이스케이프 코드를 정리하면 다음과 같다.

코드설명
\n문자열 안에서 줄을 바꿀 때 사용
\t문자열 사이에 탭 간격을 줄 때 사용
\ \\를 그대로 표현할 때 사용
\'작은따옴표(')를 그대로 표현할 때 사용
\"큰따옴표(")를 그대로 표현할 때 사용
\r캐리지 리턴(줄 바꿈 문자, 커서를 현재 줄의 가장 앞으로 이동)
\f폼 피드(줄 바꿈 문자, 커서를 줄의 다음 줄로 이동
\a벨 소리(출력할 때 PC 스피커에 '삑' 소리가 난다
\b백 스페이스
\000널 문자
  • 이 중에서 활용 빈도가 높은 것은 \n,\t,\ \,\',\"이다. 나머지는 잘 사용하지 않는다.

ㅁ 문자열 연산하기

  • 파이썬에서는 문자열을 더하거나 곱할 수 있다.

ㅁ 문자열 더해서 연결하기

>>> head = "python"
>>> tail = "is fun!"
>>> head + tail
python is fun!

ㅁ 문자열 곱하기

>>> a = "python"
>>> a * 2
pythonpython
  • a * 2라는 문장은 a를 2번 반복하라는 뜻이다.
  • *은 문자열의 반복을 뜻하는 의미로 사용되었다.

ㅁ 문자열 곱하기를 응용하기

>>> print("=" * 50)
>>> print("My Program")
>>> print("=" * 50)
==================================================
My Program
==================================================
  • 프로그램을 만들어 실행시켰을 때 출력되는 화면의 제일 위쪽에 프로그램 제목을 이와 같이 표현하면 표시하기 좋은 것 같다!

ㅁ 문자열 길이 구하기

  • 문자열의 길이는 다음과 같이 len 함수를 사용하면 구할 수 있다.
  • len 함수는 print 함수처럼 파이썬의 기본 내장 함수로, 별다른 설정 없이 바로 사용할 수 있다.

문자열의 길이에는 공백 문자도 포함된다.

>>> a = "Hello World"
>>> len(a)
11

ㅁ 문자열 인덱싱과 슬라이싱

  • 인덱싱(indexing)이란 무엇인가를 '가리킨다', 슬라이싱(sclicing)은 무엇인가를 '잘라 낸다'라는 의미이다.

ㅁ 문자열 인덱싱

>>> a = "Life is too short, You need Python"
  • 위 코드에서 변수 a에 저장한 문자열의 각 문자마다 번호르 매겨 보자!
  • 그 다음 예제를 살펴보자
>>> a = "Life is too short, You need Python"
>>> a[3]
e
  • a[3]이 뜻하는 것은 a라는 문자열의 네 번째 문자 e를 말한다.
    • 파이썬은 0부터 숫자를 센다!
    • 위 예에서 볼 수 있듯이 a[번호]는 문자열 안의 특정한 값을 뽑아내는 역할을 한다.
      • 이러한 작업을 인덱싱 이라고 한다.

ㅁ 문자열 인덱싱 활용하기

>>> a = "Life is too short, You need Python"
>>> a[0]
>>> a[12]
>>> a[-1]
L
s
n
  • 앞의 a[0]과 a[12]는 쉽게 이해할 수 있는데, 마지막의 a[-1]이 뜻하는 것은 뭘까?
  • 문자열을 뒤에서 부터 읽기 위해 -(빼기) 기호를 붙인 것이다.
  • 즉 a[-1]은 뒤에서부터 세어 첫 번째가 되는 문자를 말한다.

ㅁ 문자열 슬라이싱

  • 그렇다면 문자열에서 단순히 한 문자만 뽑아 내는 것이 아니라 'Life', 'You' 같은 단어를 뽑아 내는 방법은 없을까? 알아보자!
>>> a = "Life is too short, You need Python"
>>> b = a[0] + a[1] + a[2] + a[3]
>>> b
Life
  • 위와 같이 단순하게 접근할 수도 있지만 파이썬에서는 더 좋은 방법을 제공한다. 바로 슬라이싱(slicing) 기법이다.

인덱싱 기법과 슬라이싱 기법은 뒤에서 배울 자료형인 리스트나 튜플에서도 사용할 수 있다.

>>> a = "Life is too short, You need Python"
>>> a[0:4]
Life
  • a[0:4]는 a 문자열, 즉 "Life is too short, You need Python" 문자열에서 자리 번호 0부터 4까지의 문자를 뽑아 낸다는 뜻이다.
  • a[0:3]으로도 뽑아 낼 수 있지 않을까? 하는 의문이 생긴다.
  • 하지만 슬라이싱 기법은 a[시작번호:끝번호]를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않는다.
  • 수식으로 표현해보면 0 <= a < 3 으로 표현할 수 있다.

ㅁ 슬라이싱 기법의 원리

a[start:end:step]
  • start: 슬라이스 시작 인덱스 (기본값 = 0)
  • end: 슬라이스 끝 인덱스 (기본값 = 리스트의 끝)
  • step: 몇 칸씩 이동할지 정함 (기본값 = 1)
    • 특히, step에 -1을 주면 리스트를 거꾸로 뒤집을 수 있습니다.

ㅁ 문자열을 슬라이싱하는 방법

  • 슬라이싱 할 때 항상 시작 번호가 0일 필요는 없다.
>>> a[5:7]
>>> a[12:17]
is
short
  • a[시작번호:끝번호]에서 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아 낸다.
>>> a[19:]
You need python
  • a[시작번호:끝번호]에서 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아 낸다.
>>> a[:17]
Life is too short
  • a[시작번호:끝번호]에서 시작 번호와 끝 번호를 생략하면 문자열의 처음부터 끝까지 뽑아 낸다.
>>> a[:]
Life is too short, You need python
  • 슬라이싱에서도 인덱싱과 마찬가지로 -(빼기) 기호를 사용할 수 있다.
>>> a[19:-7]
You need

ㅁ 슬라이싱으로 문자열 바꾸기

  • Pithon 문자열을 Python으로 바꾸려면 어떻게 해야 할까?
>>> a = "Pithon"
>>> a[1] = 'y'
  • 즉, a 변수에 "Pithon" 문자열을 대입하고 a[1]의 값이 i이므로 a[1]을 y로 바꾸어 준다는 생각이다.

  • 하지만 결과는 오류가 발생한다. -> 문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문이다.

    • 그래서 문자열을 '변경 불가능한(immutable)자료형'이라고도 부른다.
  • 하지만 앞에서 배운 슬라이싱 기법을 사용하면 Pithon 문자열을 사용해 Python 문자열을 만들 수 있다.

>>> a = "Pithon"
>>>a[:1] + 'y' + a[2:]
python
  • 슬라이싱을 사용하면 "Pithon" 문자열을 'P' 부분과 'thon' 부분으로 나눌 수 있고, 그 사이에 'y' 문자를 추가하면 'Python'이라는 새로운 문자열을 만들 수 있다.

ㅁ 문자열 포매팅이란?

  • 문자열에서 또 하나 알아야 할 것으로 문자열 포매팅(string formatting)이 있다.
  • 문자열 포매팅을 공부하기 전에 다음과 같은 문자열을 출력하는 프로그램을 작성했다고 가정해 보자.

"현재 온도는 18도 입니다."

시간이 지나서 20도가 되면 다음 문장을 출력해보자

"현재 온도는 20도 입니다."

  • 두 문자열은 모두 같은데 20이라는 숫자와 18이라는 숫자만 다르다.
  • 이렇게 문자열 안에 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해 주는 것이 바로 문자열 포매팅이다.
  • 쉽게 말해 문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.

ㅁ 문자열 포매팅 따라 하기

1. 숫자 바로 대입

>>> "I eat %d apples." % 3
I eat 3 apples.
  • 결괏값을 보면 알겠지만, 위 예제는 문자열 안에 정수 3을 삽입하는 방법을 보여 준다.
  • 문자열 안의 숫자를 넣고 싶은 자리에 %d 문자를 넣어 주고
  • 삽입할 숫자 3은 가장 뒤에 있는 % 문자 다음에 써 넣었다.
    • 여기서 %d 는 '문자열 포맷 코드' 라고 부른다.

2. 문자열 바로 대입

>>> "I eat %s apples." %"five"
I eat five apples.
  • 문자열 안에 또 다른 문자열을 삽입하기 위해 앞에서 사용한 문자열 포맷 코드 %d가 아닌 %s를 썻다.

앞에서 배운 것 처럼 문자열을 대입할 때는 반드시 큰따옴표나 작은따옴표를 써야 한다.

3. 숫자 값을 나타내는 변수로 대입

>>> number = 3
>>> "I eat %d apples." % number
I eat 3 apples.
  • 1번처럼 숫자를 바로 대입하든, 위 예제처럼 숫자 값을 나타내는 변수를 대입하든 결과는 같다.

4.2개 이상의 값 넣기

  • 문자열 안에 1개가 아닌 여러 개의 값을 넣고 싶을 때는 어떻게 해야 할까?
>>> number = 10
>>> day = "three"
>>> I ate %d apples. so I was sick for %s days.: %(number, day)
I ate 10 apples. so I was sick for three days.
  • 두개 이상의 값을 넣으려면 마지막 % 다음 괄호 안에 쉼표(,)로 구분하여 각각 값을 넣어 주면 된다.

ㅁ 문자열 포맷 코드

코드설명
%s문자열(String)
%c문자 1개(character)
%d정수(integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal %(문자 % 자체)

ㅁ 여기서 %s 포맷 코드를 예제를 통해 살펴보자.

>>> "I have %s apples" %3
I have 3 apples
>>> "rate is %s" %3.234
rate is 3.234
  • 3을 문자열 안에 삽입하려면 %d를 사용해야 하고 3.234를 삽입하려면 %f를 사용해야 한다.
  • 하지만 %s를 사용하면 %s는 자동으로 % 뒤에 있는 3이나 3.234와 같은 값을 문자열로 바꾸어 대입하기 때문에 이런 것을 생각하지 않아도 된다.

ㅁ 포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다.

>>> "Error is %d%." %98
  • 여기서 결과 값이 당연히 'Error is 98%' 라고 생각하겠지만, 파이썬은 '형식이 불안전하다'라는 오류 메시지를 보여 준다.
  • 그 이유는 '문자열 포맷 코드인 %d 와 %가 같은 문자열 안에 존재하는 경우, %를 나타내려면 반드시 %%를 써야 한다.
  • 하지만, 문자열 안에 %d와 같은 포매팅 연산자가 없으면 %는 홀로 쓰여도 상관없다.
  • 위 예제를 제대로 실행하려면 다음과 같이 작성해야 한다.
>>> "Error is %d%%." % 98
Error is 98%

ㅁ 포맷 코드와 숫자 함께 사용하기

앞에서 살펴보았듯이 %d,%s등과 같은 포맷 코드는 문자열 안에 어떤 값을 삽입할 때 사용한다.
하지만 포맷 코드를 숫자와 함께 사용하면 더 유용하다.

1.정렬과 공백

>>> "%10s" % "hi"
        hi
  • %10s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미
  • 그렇다면 반대쪽인 왼쪽 정렬은 %-10s 가 될 것이다.
>>> "%-10sjane." % 'hi'
hi        jane.

2.소수점 표현하기

>>> "%0.4f" % 3.42134234
3.4213
  • 3.42134234를 소수점 네번째 자리까지만 나타내고 싶은 경우에는 위와 같이 작성한다.
  • %0.4f에서 '.'는 소수점 포인트, 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말함
  • 소수점 포인트 앞의 숫자는 문자열 전체 길이를 의미하는데, 숫자 0은 길이에 상관하지 않겠다는 의미
  • %0.4f는 0을 생략하여 %.4f 처럼 사용하기도 함
>>> "%10.4f" % 3.42134234
    3.4213

ㅁ format 함수를 사용한 포매팅

ㅁ 숫자 바로 대입하기

>>> "I eat {0} apples".format(3)
I eat 3 apples
  • 문자열 중 {0} 부분이 숫자 3으로 바뀌었다.

ㅁ 문자열 바로 대입하기

>>> "I eat {0} apples".format("five")
I eat five apples
  • 문자열의 {0} 항목이 "five"라는 문자열로 바뀌었다.

ㅁ숫자 값을 가진 변수로 대입하기

>>> number = 3
>>> "I eat {0} apples".format(number)
I eat 3 apples
  • 문자열의 {0} 항목이 number 변수의 값인 3으로 바뀌었다.

ㅁ 2개 이상의 값 넣기

>>> number = 10
>>> day = "three"
>>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
I ate 10 apples. so I was sick for three days.
  • 2개 이상의 값을 넣을 경우, 문자열의 {0},{1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.
  • 위 예에서 {0}은 format 함수의 첫 번째 입력값인 number, {1}은 format 함수의 두 번째 입력값인 day로 바뀐다.

ㅁ 이름으로 넣기

>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
I ate 10 apples. so I was sick for 3 days.
  • {name} 형태를 사용할 경우, format 함수에는 반드시 name=value와 같은 형태의 입력값이 있어야 한다.

ㅁ 인덱스와 이름을 혼용해서 넣기

>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
I ate 10 apples. so I was sick for 3 days.
  • 인덱스 항목과 name=value 형태를 혼용하는 것도 가능하다.

ㅁ 왼쪽 정렬

>>> "{0:<10}".format("hi")
hi
  • :<10 표현식을 사용하면 치환되는 문자열을 왼쪽으로 정렬하고 문자열의 총 자릿수를 10으로 맞출 수 있다.

ㅁ 오른쪽 정렬

>>> "{0:>10}".format("hi")
        hi
  • 오른쪽 정렬은 :< 대신 :>을 사용하면 된다. (화살표의 방향을 생각면 됨!)

ㅁ 가운데 정렬

>>> "{0:^10}".format("hi")
'    hi    '
  • :^를 사용하면 가운데 정렬도 가능하다.

ㅁ 공백 채우기

>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
  • 정렬할 때 공백 문자 대신 지정한 문자 값으로 채워 넣을 수도 있다.
  • 채워 넣을 문자 값은 정렬 문자 <,>,^ 바로 앞에 넣어야 한다.

ㅁ 소수점 표현하기

>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
3.4213
  • 위는 format 함수를 사용해 소수점을 4자리까지만 표현하는 방법을 보여 준다.
  • 앞서 보았던 표현식 0.4f를 그대로 사용한 것을 알 수 있다.
>>> "{0:10.4f}".format(y)
'    3.4213'
  • 위와 같이 자릿수를 10으로 맞출 수도 있다.

ㅁ {또는}문자 표현하기

>>> "{{ and }}".format()
{ and }
  • format 함수를 사용해 문자열을 포매팅할 경우, {}와 같은 중괄호 문자를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에 위 예의 {{}}처럼 2개를 연속해서 사용하면 된다.

ㅁ f 문자열 포매팅

파이썬 3.6버전부터는 f문자열 포매팅 기능을 사용할 수 있다. 파이썬 3.6 미만 버전에서는 사용할 수 없다.

  • 다음과 같이 문자열 앞에 f 접두사를 붙이면 f문자열 포매팅 기능을 사용할 수 있다.
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
나의 이름은 홍길동입니다. 나이는 30입니다.
  • f 문자열 포매팅은 위와 같이 name, age와 같은 변숫값을 생성한 후에 그 값을 참조할 수 있다.
  • 또 f 문자열 포매팅은 표현식을 지원하기 때문에 다음과 같은 것도 가능하다.
    • 표현식이란 중괄호 안의 변수를 계산식과 함께 사용하는 것을 말한다.
>>> age = 30
>>> f'나는 내년이면 {age + 1}살이 된다.'
나는 내년이면 31살이 된다.
  • 딕셔너리는 f 문자열 포매팅에서 다음과 같이 사용할 수 있다.
>>> d = {'name':'홍길동','age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
나의 이름은 홍길동입니다. 나이는 30입니다.

딕셔너리는 Key와 Value라는 것을 한 쌍으로 가지는 자료형이다.

  • 정렬은 다음과 같이 할 수 있다.
>>> f'{"hi":<10}'  # 왼쪽 정렬
'hi        '
>>> f'{"hi":>10}'  # 오른쪽 정렬
'        hi'
>>> f'{"hi":^10}'  # 가운데 정렬
'    hi  
  • 공백 채우기는 다음과 같이 할 수 있다.
>>> f'{"hi":=^10}'  # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}'  # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'
  • 소수점은 다음과 같이 표현할 수 있다.
>>> y = 3.42134234
>>> f'{y:0.4f}'  # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}'  # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
'    3.4213'
  • f 문자열에서 {}를 문자 그대로 표시하려면 다음과 같이 2개를 동시에 사용해야 한다.
>>> f'{{and}}'
{and}

ㅁ 문자열 관련 함수들

문자열 자료형은 자체적으로 함수를 가지고 있다.

  • 이들 함수를 다른 말로 '문자열 내장 함수'라고 한다.
  • 이 내장 함수를 사용하려면 문자열 변수 이름 뒤에'.'를 붙인 후 함수 이름을 써 주면 된다.
  • 이제 문자열 내장 함수에 대해 알아보자!

ㅁ 문자 개수 세기 - count

>>> a = "hobby"
>>> a.count('b')
2
  • count 함수로 문자열 중 문자 b의 개수를 리턴했다.

ㅁ 위치 알려주기 1 - find

>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
  • find 함수로 문자열 중 문자 b가 처음으로 나온 위치를 반환했다.
  • 만약 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환한다.

    파이썬은 숫자를 0부터 세기 때문에 b의 위치는 15가 아닌 14가 된다.

ㅁ 위치 알려 주기 2 - index

>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
  • index 함수로 문자열 중 문자 t가 맨 처음으로 나온 위치를 반환했다.
  • 만약 찾는 문자나 문자열이 존재하지 않는다면 오류가 발생한다.
  • 앞서 find 함수와는 다른 점이 오류가 발생한다는 것이다.

ㅁ 문자열 삽입 - join

>>> ",".join('abcd')
'a,b,c,d'
  • join 함수로 abcd 문자열의 각각의 문자 사이에 ','를 삽입했다.
  • join 함수는 문자열뿐만 아니라 앞으로 배울 리스트나 튜플도 입력으로 사용할 수 있다.
  • join 함수의 입력으로 리스트를 사용하는 예는 다음과 같다.
>>> ",".join(['a', 'b', 'c', 'd'])
a,b,c,d

ㅁ 소문자를 대문자로 바꾸기 -upper

>>> a = "hi"
>>> a.upper()
HI
  • upper 함수는 소문자를 대문자로 바꾸어 준다. 만약 문자열이 이미 대문자라면 아무런 변화 X

ㅁ 대문자를 소문자로 바꾸기 - lower

>>> a = "HI"
>>> a.lower()
hi
  • lower 함수는 대문자를 소문자로 바꾸어 준다.

ㅁ 왼쪽 공백 지우기 - lstrip

>>> a = " hi "
>>> a.lstrip()
'hi '
  • lstrip 함수는 문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백들을 모두 지운다.

ㅁ 오른쪽 공백 지우기 - rstrip

>>> a= " hi "
>>> a.rstrip()
' hi'
  • rstrip 함수는 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백을 모두 지운다.

ㅁ 양쪽 공백 지우기 - strip

>>> a = " hi "
>>> a.strip()
'hi'
  • strip 함수는 문자열 양쪽에 있는 한 칸 이상의 공백을 모두 지운다.

ㅁ 문자열 바꾸기 - replace

>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
  • replace 함수는 replace(바뀔문자열, 바꿀문자열)처럼 사용해서 문자열 안의 특정한 값을 다른 값으로 치환해 준다.

ㅁ 문자열 나누기 - split

>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
  • split 함수는 a.split() 처럼 괄호 안에 아무 값도 넣어 주지 않으면 공백([Space],[Tab],[Enter])을 기준으로 문자열을 나누어 준다.
  • b.split(':')처럼 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다.
  • 이렇게 나눈 값은 리스트에 하나씩 들어간다.
    • ['Life', 'is', 'too', 'short']나 ['a', 'b', 'c', 'd']가 리스트이다.

ㅁ 착각하기 쉬운 문자열 함수

  • 소문자를 대문자로 바꾸어 주는 다음의 예를 보자!
>>> a = 'hi'
>>> a.upper()
'HI'
  • 이와 같이 실행한 후에 a 변수의 값은 'HI'로 변했을까? 아니면 'hi' 값을 유지할까?
  • 확인해 보면 'hi'값을 유지한다.
  • upper()를 실행하면 upper 함수는 a변수의 값 자체를 변경하는 것이 아니라 대문자로 바꾼 값을 리턴하기 때문이다.
  • 문자열은 위에서도 언급했지만 자체의 값을 변경할 수 없는 immutable 자료형이다.
  • 따라서 a 값을 'HI'로 바꾸고 싶다면 다음과 같이 대입문을 사용해야 한다.
>>> a = a.upper()
>>> a
'HI'

upper 뿐만 아니라 lower, join, lstrip, rstrip, replace, split 함수는 모두 이와 같은 규칙이 적용되어 문자열 자체의 값이 변경되는 것이 아니라 변경된 값을 리턴한다는 사실에 주의하자




참고자료 및 출처

https://wikidocs.net/13

profile
안녕하세요

0개의 댓글