티스토리 뷰

IT/Python

[Python] 문자열

Dragonz 2020. 6. 30. 02:47
반응형

 

파이썬은 싱글쿼트('...') 와 더블쿼트("...") 로 문자열을 만들 수 있고, 문자열의 연산도 가능하다.

>>> 'spam eggs'     # 싱글쿼트
'spam eggs'

>>> 'doesn\'t'     # 싱글쿼트로 감싼 문자열에서 싱글쿼트를 표현하려면 \ 를 사용
"doesn't"

>>> "doesn't"     # 더블쿼트로 감싼 문자열에서는 싱글쿼트는 하나의 문자로 인식
"doesn't"

>>> '"Yes," they said.'     # 싱글쿼트로 감싼 문자열에서는 더블쿼트는 하나의 문자로 인식
'"Yes," they said.'

>>> "\"Yes,\" they said."     # 더블쿼트로 감싼 문자열에서 더블쿼트를 표현하려면 \를 사용
'"Yes," they said.'

>>> '"Isn\'t," they said.'     # 의도치 않은 결과가 나올 수 있음
'"Isn\'t," they said.'

 

문자열 표현

 

print() 함수를 사용하면 싱글쿼트, 더블쿼트를 생략하고 특수문자와 이스케이프문자(\) 를 표현하기 때문에 더 보기좋은 결과를 화면에 출력한다.

>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'

>>> print('"Isn\'t," they said.')
"Isn't," they said.

>>> s = 'First line.\nSecond line.'     # \n 은 줄바꿈을 의미함
>>> s     # print() 함수를 사용하지 않으면 \n 이 그대로 출력됨
'First line.\nSecond line.'

>>> print(s)     # print() 를 사용하면 의도한대로 줄바꿈되어 출력됨
First line.
Second line.

 

print() 함수를 사용하면 보기좋은 출력이 가능하다.

 

\ 를 포함한 특수문자 (ex. \n 또는 \t 등) 를 문자열로 표현하기 위해서는 싱글쿼트 시작 전 r 을 입력한다.

>>> print('C:\some\name')     # \n 은 줄바꿈을 의미하므로 의도하지 않은 결과 발생
C:\some
ame

>>> print(r'C:\some\name')     # 싱글쿼트 시작 전 r 을 입력하면 \n 은 문자로 인식
C:\some\name

 

\ 를 특수문자가 아닌 일반문자열로 표현

 

여러줄로 이루어진 문자열을 표현하고 싶을 때는 싱글쿼트 세 개 ('''...''') 또는 더블쿼트 세 개 ("""...""") 로 문자열을 생성한다. 이렇게 이루어진 문자열에서 줄바꿈을 표현하고 싶지 않을 때는 줄 끝에 \ 를 붙인다.

# 세 개의 더블쿼트로 감싼 문자열은 자동으로 줄 끝에 \n 이 추가된다.
>>> 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

# 멀티라인 문자열에서 줄바꿈을 원하지 않을 때는 줄 끝에 \ 를 추가한다.
>>> 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 * 'un' + 'ium'     # un 문자열을 세 번 반복하고 그 뒤에 ium 문자열을 붙임
'unununium'

 

문자열을 붙이거나 반복할 수 있다.

 

싱글쿼트 또는 더블쿼트로 감싼 문자열을 여러개 나열하면 자동으로 결합된다.

>>> 'Py' 'thon'
'Python'

>>> "Py" "thon"
'Python'

 

문자열을 나열하는 것만으로 자동 결합된다.

 

이 기능은 길이가 긴 문자열을 끊어서 표현할 때 유용하다.

>>> text = ('Put several strings within parentheses '
... 'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

 

길이가 긴 문자열의 표현

 

단, 변수에 담긴 문자열과 일반 문자열은 위와 같은 방식으로 결합할 수 없다. 변수와 일반 문자열의 결합은 + 연산자를 사용한다.

>>> prefix = 'Py'
>>> prefix 'thon'     # 변수에 담긴 문자열과 단순 문자열은 위의 방식으로 결합되지 않음
  File "<stdin>", line 1
    prefix 'thon'     # 변수에 담긴 문자열과 단순 문자열은 위의 방식으로 결합되지 않음
                ^
SyntaxError: invalid syntax

>>> prefix + 'thon'     # + 연산자를 이용하여 결합
'Python'

 

변수와 일반 문자열의 결합은 + 연산자를 사용

 

문자열의 인덱스를 이용하여 특정 위치의 문자를 추출할 수 있다. 문자열 인덱스는 0부터 시작한다.

>>> word = 'Python'
>>> word[0]     # 0번 인덱스인 문자 P 를 출력
'P'

>>> word[5]     # 5번 인덱스인 문자 n 을 출력
'n'

 

문자열 인덱스를 사용한 문자 추출

 

음수는 문자열의 뒤쪽을 기준으로 인덱싱을 한다. 뒤쪽에서 시작하는 인덱스는 -1 부터 시작한다.

>>> word[-1]     # 마지막 문자
'n'

>>> word[-2]     # 뒤에서 두번째 문자
'o'

>>> word[-6]     # 뒤에서 여섯번째 문자
'P'

 

음수는 뒤에서부터 문자열을 추출할 수 있다.

 

인덱스를 이용하여 문자열 슬라이싱도 가능하다. 한 가지 주의할 점은 : 앞의 인덱스는 해당 문자를 포함하고 : 뒤의 인덱스는 해당 문자를 포함하지 않는 다는 것이다.

>>> word[0:2]     # 0번 인덱스(포함)부터 2번 인덱스(미포함) 전까지
'Py'

>>> word[2:5]     # 2번 인덱스(포함)부터 5번 인덱스(미포함) 전까지
'tho'

 

문자열 슬라이싱

 

인덱스를 생략한 슬라이싱도 가능하다.

>>> word[:2] + word[2:]     # 맨 처음부터 2번 인덱스 전까지 (Py) + 2번 인덱스부터 맨 마지막까지 (thon) 결합
'Python'

>>> word[:4] + word[4:]     # 맨 처음부터 4번 인덱스 전까지 (Pyth) + 4번 인덱스부터 맨 마지막까지 (on) 결합
'Python'

 

인덱스를 생략한 슬라이싱

 

>>> word[:2]     # 처음부터 2번 인덱스 전까지
'Py'

>>> word[4:]     # 4번 인덱스부터 마지막까지
'on'

>>> word[-2:]     # 뒤에서 두 번째 인덱스부터 마지막까지
'on'

 

음수를 이용하여 슬라이싱을 할 수 있다.

 

참고. 문자열 인덱스

 

파이썬에서는 문자열 변경이 불가능하다. 특정 위치의 문자를 바꾸기 위해서는 슬라이싱과 결합을 이용하여 새로운 문자열을 만들어야 한다.

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

>>> word[2:] = 'py'     # 에러 발생
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

>>> 'J' + word[1:]     # 문자열 슬라이싱과 + 연산자를 이용한 새로운 문자열 생성
'Jython'

>>> word[:2] + 'py'
'Pypy'

 

문자열 변경이 불가하므로 슬라이싱을 이용하여 새로운 문자열을 만든다.

 

추가로 len() 함수는 문자열의 길이를 return 한다.

>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34

 

len() 함수로 문자열의 길이를 구할 수 있다.

 

END

반응형

'IT > Python' 카테고리의 다른 글

[Python] 리스트 (더 자세하게 알아보기)  (0) 2020.07.09
[Python] 함수 (Function)  (0) 2020.07.08
[Python] 제어문 (if, for, range(), break, continue)  (0) 2020.07.02
[Python] 리스트  (0) 2020.06.30
[Python] 숫자 연산  (0) 2020.06.28
댓글
공지사항