[Python] 문자열 (str)

2020. 9. 23. 17:14

(파이썬 버전: 3.8.2)

파이썬에서 문자열은 유니코드 코드 포인트의 불변(immutable) 시퀀스입니다.

문자열 사용법을 간략히 알아보겠습니다.

Python 문자열 str

 

텍스트 시퀀스 str 사용법

파이썬은 작은따옴표('...') 또는 큰따옴표("...")로 텍스트를 표현할 수 있습니다. 작은 따옴표와 큰 따옴표를 썼을 때 문자열에 차이는 없는데, 이스케이핑할 때만 다른 결과를 가집니다.

>>> 'abc'	# 작은따옴표
'abc'

>>> "abc"	# 큰 따옴표
'abc'

>>> 'doesn\'t'	# \'로 작은 따옴표 이스케이핑
"doesn't"

>>> "doesn't"	# 큰따옴표를 사용하면 작은따옴표 이스케이핑 필요 없음
"doesn't"

저같은 경우 보통 작은 따옴표를 쓰고, 문자열 안에 작은 따옴표가 들어가는 경우 이스케이핑 귀찮으니까 그땐 큰 따옴표를 씁니다. 작은 따옴표를 쓰는게 손이 더 편합니다. 쉬프트를 누르지 않아도 되니까요

>>> print('C:\some\name')	# \n은 newline으로 이스케이핑 됨
C:\some
ame

>>> print(r'C:\some\name')	# raw string
C:\some\name

raw string을 표현하려면 문자열 앞에 r을 붙입니다. raw string은 문자열 내부 이스케이핑 시키지 않은 문자열을 보여줍니다.

>>> print("""\
... Usage: thingy [OPTIONS]
...      -h                        Display this usage message
...      -H hostname               Hostname to connect to
... """)
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to

여러줄의 문자열을 표현하고 싶을때는 삼중따옴표를 사용할 수 있습니다. 이때 개행문자는 자동으로 문자열에 포함됩니다. 줄 끝에 \를 붙이면 이를 방지할 수 있습니다.

>>> 3 * 'py' + 'thon'
'pypypython'

* 연산자로 문자열을 반복할 수 있고, + 연산자로 이어붙일 수 있습니다.

>>> word = 'Python'
>>> word[0]
'P'

>>> word[5]
'n'

>>> word[-1]
'n'

>>> word[-6]
'P'

>>> word[0] = 'C'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

인덱스로 문자에 접근할 수 있는데 이는 다른 자료형을 사용한 것은 아니고 단순히 길이가 1인 문자열입니다. 문자열 str은 불변 시퀀스이기 때문에 수정은 불가능합니다. 다른 문자열이 필요하면 새로 만들어야 합니다.

인덱스는 0부터 시작하고, 음수도 들어올 수 있는데 이 경우 끝에서 부터 셉니다. 인덱스가 알맞지 않은 경우 IndexError가 발생합니다.

>>> word[0:2]
'Py'

>>> word[:4]
'Pyth'

>>> word[3:]
'hon'

파이썬에서는 슬라이싱을 통해 부분 문자열(substring)을 얻을 수 있습니다. [a:b]는 [a, b)의 substring을 나타내고 a는 포함(inclusive), b는 포함하지 않습니다(exclusive).

슬라이스 인덱스를 생략하는 경우 첫번째 인덱스는 기본값으로 0을 갖고, 두번째 인덱스는 문자열의 길이가 들어갑니다.

슬라이싱할 때 범위가 벗어나도 에러가 발생하지 않습니다.

>>> len('abbbasdbasabb')
13

문자열의 길이를 알기 위해서는 len() 함수를 사용합니다.