게시:

문자열이라는 단어 뜻 그대로 문자(Character)를 순서대로 나열(Squence)한 자료형이다. 예를 들어 ‘a’, ‘p’, ‘p’, ‘l’, ‘e’ 같은 문자(Character)가 순서대로 나열되면 ‘apple’이라는 문자열(String)이 된다.

파이썬에서는 문자열은 str으로 표기하며 값을 변경할 수 없는 불변형(Immutable) 객체이다. 불변형 객체이기 때문에 변수를 선언하여 문자열 객체를 만들고 해당 변수에 다른 값을 다시 할당하여도 변수가 다른 메모리를 참조할 뿐 이전에 생성된 문자열은 사라지지 않는다.

파이썬은 인덱싱, 슬라이싱, 기타 내장함수 등 문자열에 대한 다양한 연산을 지원한다.

참고: 이와 반대로 리스트(list) 자료형은 동적 배열의 가변형 자료형이다.

문자열의 연산

인덱싱(Indexing)

문자열은 순서열이기 때문에 인덱싱을 통하여 특정 위치(문자)를 가리킬 수 있다.
이와 같이 위치로 특정 문자를 가리키는 것을 인덱싱이라고 하며 참고로 공백도 문자로 친다.

‘Python 기초’라는 문자열은 다음과 같은 순서열로 볼 수 있다.

[p][y][t][h][o][n][ ][][]  # 문자열
 0  1  2  3  4  5  6  7   8   # 인덱스 번호(양수)
-9 -8 -7 -6 -5 -4 -3 -2  -1   # 인덱스 번호(음수)

문자열에서 첫 번째 인덱스는 항상 0이고 거꾸로 셀 경우에는 첫 번째 인덱스가 언제나 -1이다.
문자열 뒤에 인덱싱(접근)하려는 문자열의 정수값을 대괄호 안에 넣으면 해당 문자가 인덱싱된다.

>>> 'python 기초'[0]
'p'

>>> 'python 기초'[8]
'초'

>>> 'python 기초'[-2]
'기'

슬라이싱(Slicing)

인덱스 범위를 지정하여 부분 문자열(Substring)을 얻는 것을 슬라이싱이라고 한다. 정확하게는 해당 인덱스에 위치한 배열의 포인터를 확보하는 것으로 이 포인터로 참조된 객체를 찾아내는 것이다. 파이썬에서는 이 과정이 매우 빠르게 진행되어 코딩 테스트 시에 유용하다.

문자열 뒤에 시작 인덱스(Start), 종료 인덱스(End), 간격(Step)을 입력하여 슬라이싱할 수 있다.
간격은 기재하지 않고 생략할 수 있으며 생략하는 경우 기본값인 1로 지정된다.

  • 시작 인덱스: 슬라이싱을 시작할 문자의 위치를 지정한다.
  • 종료 인덱스: 슬라이싱을 종료할 문자의 바로 앞 위치를 지정한다.
  • 간격: 어떤 간격으로 슬라이싱할지 정한다. 기본값은 1이며 예를 들어 2로 지정할 경우 1칸씩 건너뛰며 문자를 가져온다.
# 형태
'string'[start:end:step]

# Example
>>>'python 기초'[0::3]
'ph'

>>>'python 기초'[-1:-4:-2]
'초 '

>>>'python 기초'[::-1]
'초기 nohtyp'

참고: 종료 인덱스가 부분 문자열의 마지막 인덱스가 아니라, 마지막 인덱스 직전의 인덱스라 자주 햇갈리는데 슬라이싱이라는 개념이 인덱스로 지정한 부분을 그대로 드러낸다는 개념이기 보다는 지정한 부분을 칼로 뚝 잘라오는 개념다. 따라서 각 인덱스의 시작점을 기준으로 잘라온다고 생각하면 이해하기 쉽다.

내장함수

함수
설명
결과
예시
len() 문자열의 크기를 반환 int len('python')
upper() 모든 영문자를 대문자로 변환 str 'python'.upper()
lower() 모든 영문자를 소문자로 변환 str 'python'.lower()
swapcase() 영문 대문자는 소문자로 영문 소문자는 대문자로 변환 str 'python'.swapcase()
capitalize() 문자열 첫 번째 문자만 대문자로 변환 str 'python'.capitalize()
find() 부분 문자열(substr)를 검색하여 해당 문자의 인덱스를 반환 int 'python'.find('py')
rfind() find 함수와 같으나 뒤에서 부터 검색 int 'python'.rfind('py')
in 부분 문자열(substr)이 문자열에 포함되어 있는지 검사 Bool 'hon' in 'python'
count() 부분 문자열(substr)이 몇 번 나타나는지 계수 int 'python'.count('th')
replace() 부분 문자열(substr)을 다른 부분 문자열(substr)으로 치환 str 'python'.replace('p', 'c')
+ 문자열 연결 str 'abc'+'def'
* 문자열 반복, str과 int 사이에 가능 str 'Zzz...' * 3

댓글남기기