[Python] 문자열 자료형

참조


소개

  • 파이썬을 공부해야 할 일이 생겨서, 위키독스에 올라와 있는 점프 투 파이썬 내용을 보면서 파이썬 공부한 내용을 기록합니다.
  • 보다 자세한 내용은 점프 투 파이썬 해당 사이트에 가셔서 더 깊게 확인하실 수 있습니다.

문자열이란?

  • 문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미합니다.
  • 아래와 같은 것들이 문자열입니다.
"Life is too short, You need Python"
"a"
"123"

문자열은 어떻게 만들고 사용할까?

  • 파이썬에서 문자열을 만드는 방법은 총 4가지 입니다.

1. 큰따옴표(")로 양쪽 둘러싸기

"Hello World"

2. 작은따옴표(')로 양쪽 둘러싸기

'Python is fun'

3. 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기

"""Life is too short, You need python"""

4. 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기

'''Life is too short, You need python'''

문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때

  • 문자열을 만들어 주는 주인공은 작은따옴표(')와 큰따옴표(") 입니다.
  • 그런데 문자열 안에도 작은따옴표와 큰따옴표가 들어 있어야 할 경우가 있습니다.

1. 문자열에 작은따옴표(') 포함시키기

Python's favorite food is perl
  • 위와 같은 문자열을 food 변수에 저장하고 싶다고 가정합니다.
  • 문자열 중에 작은따옴표가 포함되어 있습니다.
  • 이럴 때는 큰따옴표(")로 둘러싸야 합니다.
  • 큰 따옴표 안에 들어있는 작은 따옴표는 문자열을 나타내기 위한 기호로 인식되지 않습니다.
>>> food = "Python's favorite food is perl"
>>> food
"Python's favorite food is perl"

2. 문자열에 큰따옴표(") 포함시키기

"Python is very easy." he says.
  • 위와 같이 큰따옴표(")가 포함된 문자열이라면 작은따옴표(')로 둘러싸면 됩니다.
>>> say = '"Python is very easy." he says.'

3. 백슬래시()를 사용해서 작은따옴표(')와 큰따옴표(")를 문자열에 포함시키기

>>> food = 'Python\'s favorite food is perl'
>>> say = "\"Python is very easy.\" he says."
  • 작은따옴표나 큰따옴표를 문자열에 포함시키는 또 다른 방법은 백슬래시()를 사용하는 것입니다.
  • 즉 백슬래시()를 작은따옴표나 큰따옴표 앞에 삽입하면 백슬래시 뒤의 작은따옴표나 큰따옴표는 문자열을 둘러싸는 기호의 의미가 아니가 문자 그 자체를 뜻하게 됩니다.

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

  • 문자열이 항상 한 줄짜리만 있는 것은 아닙니다.
Life is too short
You need python

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

>>> multiline = "Life is too short\nYou need python"
  • 위 예처럼 줄바꿈 문자 \n을 삽입하는 방법이 있지만 읽기에 불편하고 줄이 길어지는 단점이 있습니다.

연속된 작은따옴표 3개(''') 또는 큰따옴표 3개(""") 사용하기

  • 위 1번의 단점을 극복하기 위해 파이썬에서는 다음과 같이 작은따옴표 3개(''') 또는 큰따옴표 3개(""")를 사용합니다.
>>> multiline='''
... Life is too short
... You need python
... '''

>>> multiline="""
... Life is too short
... You need python
... """

문자열 연산하기

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

문자열 더해서 연결하기

>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
  • 위 소스 코드에서 세 번째 줄을 자세히 봅니다.
    • 연산자를 통해서 문자열 변수인 head, tail 2개가 합쳐진 것을 확인할 수 있습니다.

문자열 곱하기

>>> a = "python"
>>> a * 2
'pythonpython'
  • 위 소스코드에서 * 의 의미는 우리가 일반적으로 사용하는 숫자 곱하기의 의미와는 다릅니다.
  • 위 소스코드에서 a * 2 문장은 a를 2번 반복하라는 의미입니다.
  • * 연산자는 문자열의 반복을 뜻합니다.

문자열 길이 구하기

  • 문자열의 길이는 다음과 같이 len 함수를 사용하면 구할 수 있습니다.
>>> a = "Life is too short"
>>> len(a)
17

문자열 인덱싱과 슬라이싱

  • 인덱싱이란 무엇인가를 "가리킨다"는 의미이고, 슬라이싱은 무엇인가를 "잘라낸다"는 의미입니다.

문자열 인덱싱이란?

>>> a = "Life is too short, You need Python"
  • 위 소스코드에서 변수 a에 저장한 문자열의 각 문자마다 번호를 매겨보면 다음과 같습니다.
Life is too short, You need Python
0         1         2         3 
0123456789012345678901234567890123
  • "Life is too short, You need Python" 문자열에서 L은 첫 번째 자리를 뜻하는 숫자 0, 바로 다음인 i는 1 이런 식으로 계속 번호를 붙인 것이다. 중간에 있는 short의 s는 12가 됩니다.
>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
  • a[3] 이 뜻하는 것은 a라는 문자열의 네 번째 문자 e를 말합니다.
  • 반대로 a[-1] 과 같이 음수의 숫자를 쓰게 되면, 맨 뒤에서 부터 값을 가져오라는 뜻입니다.

문자열 슬라이싱이란?

  • 그렇다면 "Life is too short, You need Python" 문자열에서 단순히 한 문자만을 뽑아내는 것이 아니라 'Life' 또는 'You' 같은 단어를 뽑아내는 방법은 없을까?
  • 아래와 같이 하면 됩니다.
>>> a = "Life is too short, You need Python"
>>> b = a[0] + a[1] + a[2] + a[3]
>>> b
'Life'
  • 위 방법처럼 단순하게 접근할 수도 있지만 파이썬에서는 더 좋은 방법을 제공합니다.
  • 바로 슬라이싱 기법입니다.
>>> 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]은 L, a[1]은 i, a[2]는 f, a[3]은 e니까 a[0:3]으로도 Life라는 단어를 뽑아낼 수 있지 않을까? 다음 예로 확인해 보자.
>>> a[0:3]
'Lif'
  • 이렇게 되는 이유는 간단합니다.
  • 슬라이싱 기법으로 a[시작 번호:끝 번호]를 지정할 때 끝 번호에 해당하는 것은 포함하지 않기 떄문입니다.
  • a[0:3]을 수식으로 나타내면 다음과 같습니다.
0 <= a < 3

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

  • 슬라이싱할때 항상 시작 번호가 0일 필요는 없습니다.
>>> a[0:2]
'Li'
>>> a[5:7]
'is'
>>> a[12:17]
'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
  • 위 소스코드에서 a[19:-7]이 뜻하는 것은 a[19]에서부터 a[-8]까지를 말합니다.
  • 이 역시 a[-7]은 포함하지 않습니다.

문자열 포매팅 따라하기

1. 숫자 바로 대입

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

2. 문자열 바로 대입

>>> "I eat %s apples." % "five"
'I eat five apples.'
  • 위 예제에서는 문자열 안에 또 다른 문자열을 삽입하기 위해 %s를 사용했습니다.

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

>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'

4. 2개 이상의 값 넣기

  • 파이썬에서 2개 이상의 값을 넣는 방법은 다음과 같습니다.
>>> 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.'
  • 위 예문처럼 2개 이상의 값을 넣으려면 마지막 % 다음 괄호 안에 콤마(,) 로 구분하여 값을 넣어주면 됩니다.

format 함수를 사용한 포매팅

  • 문자열의 format 함수를 사용하면 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있습니다.

숫자 바로 대입하기

>>> "I eat {0} apples".format(3)
'I eat 3 apples'

문자열 바로 대입하기

>>> "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로 바뀝니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY