파이썬 문자열(String)에 대해서
게시:
문자열이라는 단어 뜻 그대로 문자(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 |
댓글남기기