문자열(str) 자료형
1. 문자열 자료형이란?
문자열 자료형은 문자로 이뤄진 자료형을 나타냅니다. 작은 따옴표(') 또는 큰 따옴표(")로 문자열을 감싸면 됩니다.
작은 따옴표 3개, 큰 따옴표 3개로 여러 문장도 입력이 가능합니다.
개행까지 잘 입력된 것을 확인할 수 있습니다.
2. 문자열을 만드는 여러가지 방법
2.1 문자열 이어붙이기
문자열을 이어붙이는 방법은 +
를 사용하면 됩니다.
2.2 문자열 반복하기
문자열을 반복하고 싶을 때는 *
를 사용하면 됩니다.
2.3 f-string 활용하기
f-string은 문자열 내에 변수를 삽입할 때 사용합니다. f-string은 문자열 앞에 f
를 붙여 사용합니다.
3. 문자열 인덱싱
문자열의 순서를 인덱스라고 합니다. 이렇게 인덱스로 해당 위치에 값에 접근할 수 있는 방법을 인덱싱이라고 합니다. 인덱스는 0부터 시작하며, 문자열의 마지막 문자의 인덱스는 -1입니다. 숫자를 바꿔가면서 인덱싱을 해보세요.
이번에는 s[100]
이라고 입력해보세요. 허용하는 범위를 넘어가면 애러가 발생합니다. 이러한 에러를 마주쳤을 때 마치 오답노트를 만들듯이 에러명을 기억하는 것이 좋습니다. 에러명은 IndexError
이며 string
에 index
가 범위를 벗어났다고 알려줍니다.
4. 문자열 슬라이싱
문자열의 일부분을 추출하고 싶을 때에는 인덱스를 사용하여 잘라낼 수 있습니다.
4.1 슬라이싱
슬라이싱의 기본 문법은 s[start:stop:step]
의 형태를 가집니다. start
는 슬라이싱을 시작할 인덱스, stop
은 슬라이싱을 종료할 인덱스, step
은 슬라이싱할 간격을 나타냅니다. step
은 기본적으로 1
이며 콜론(:
)과 함께 생략될 수 있습니다. 여기서 stop 인덱스
는 슬라이싱 영역에 포함하지 않습니다.
4.2 다양한 슬라이싱 형태 알아보기
다양한 형태의 슬라이싱을 알아보도록 하겠습니다. 숫자를 다양하게 바꿔가며 실습해보세요.
첫 번째 예시에서는 start
를 0으로, stop
을 5로 지정하여 인덱스 0부터 4까지의 부분 문자열을 추출합니다. 이때 stop
인덱스는 포함되지 않는 점에 주의해야 합니다.
두 번째 예시는 start
를 6으로 지정하고 stop
을 생략하였습니다. 이 경우 start
인덱스부터 문자열의 끝까지 슬라이싱됩니다.
세 번째 예시는 start
와 stop
을 모두 생략한 경우로, 문자열 전체가 그대로 반환됩니다.
네 번째 예시는 step
을 -1로 지정하여 문자열을 역순으로 슬라이싱합니다. 이는 문자열을 뒤집을 때 유용하게 사용됩니다.
마지막 예시는 step
을 2로 지정하여 한 칸씩 건너뛰면서 슬라이싱합니다.
슬라이싱 시 start
, stop
, step
은 생략 가능합니다. 생략된 경우 start
는 0, stop
은 문자열의 길이, step
은 1로 간주됩니다.
5. 문자열 메서드
5.1 lower( ) / upper( )
lower( )은 전체 데이터를 소문자로 바꿔주는 메서드이고, upper( )은 전체 데이터를 대문자로 바꿔주는 메서드입니다.
5.2 find( ) / index( )
find( )와 index( )는 특정 데이터를 찾아서 출력해주는 메서드입니다. 다만 두개의 메서드가 완전히 동일한 기능을 수행하는 것은 아닙니다. 찾을 수 없는 문자열일 경우 find는 -1을 반환하는 반면, index는 error를 반환합니다.
5.2.1 찾을 값이 있는 문자열인 경우
CEO는 6번째 자리에 위치하고 있기 때문에 6을 출력합니다.
5.2.2 찾을 값이 없는 문자열인 경우
find는 CTO라는 값을 찾을 수 없기 때문에 -1을, index는 error를 출력한 것을 볼 수 있습니다. 다만 error를 출력하지 않기 때문에 항상 find를 사용해야 하는 것은 아닙니다. 적절하게 에러를 출력해주어야 코드를 수정해가며 좀 더 견고한 코드를 작성할 수 있습니다.
5.3 count( )
count( )는 특정 문자열이나 숫자의 개수를 셀 때 사용하는 method입니다.
i는 총 2번 출현하기에 2를 출력합니다.
5.4 replace( )
replace( )는 문자열을 대체하는 method입니다. 만약 문자열 중 특정 문자열을 찾아서 다른 문자열로 대체하고 싶을 때 유용합니다. replace 괄호 안에는 첫번째로 대체하고 싶은 문자열을 넣고, 두번째로 대체할 문자열을 넣습니다. 아래 예제를 살펴보겠습니다.
위 코드에서는 CEO를 CTO로 대체하였습니다.
5.5 split( ) / join( )
split과 join은 문자열을 나누고 합치는 메서드입니다. 이러한 메서드를 통해 원하는 형식으로 데이터를 분할하고 합칠 수 있습니다. 예를 들어 전화번호가 010 1000 1000
으로 입력이 되었다면 띄어쓰기로 쪼개 010
, 1000
, 1000
로 만들 수 있으며, 이것을 대쉬(-
)로 합쳐 010-1000-1000
처럼 만들 수 있습니다. 많이 사용되는 메서드이니 꼭 기억해주세요.
5.5.1 split( )
split( ) 메서드는 문자열을 나누는 메서드입니다. 아래 예제를 살펴보겠습니다.
위 코드에서는 문자열을 공백을 기준으로 나누었습니다. 이번에는 다른 조건으로 문자열을 나누어보겠습니다.
위 코드에서는 문자열을 -
를 기준으로 나누었습니다. 문자열을 나누면 대괄호로 감싸여진 리스트라는 자료형으로 결과값이 나옵니다.
5.5.2 join( )
join( ) 메서드는 split( ) 메서드와 반대로 리스트를 하나의 문자열로 합치는 메서드입니다. 아래 예제를 살펴보겠습니다.
위 코드에서는 리스트를 -
를 기준으로 하나의 문자열로 합쳤습니다. 리스트를 문자열로 합치면 문자열로 반환됩니다.
5.6 format( )
format( ) 메서드는 문자열 내에서 변수의 값을 대입할 때 사용하는 메서드입니다. 아래 예제를 살펴보겠습니다.
위 코드에서는 문자열 내에 {}
를 넣어 변수의 값을 대입하였습니다. format()
메서드를 이용해 {}
에 변수의 값을 순서대로 대입할 수 있습니다.
6. 이스케이프 문자
이스케이프 문자는 문자열 내에서 특별한 의미를 가지는 문자들을 나타내기 위해 사용되는 특별한 문자 조합입니다. 예를 들어 'hello world'라는 문자열 안에 작은 따옴표를 넣고 싶다면 이스케이프 문자를 사용하여 해당 문자의 원래 의미를 "탈출"시켜야 합니다. 주로 백슬래시(\
)로 시작하며, 백슬래시 뒤에 오는 문자와 함께 특정한 문자나 명령을 나타냅니다.
\n
: 새로운 줄(줄바꿈)을 나타냅니다.\t
: 탭 문자를 나타냅니다.\r
: 커서를 현재 줄의 처음으로 이동합니다.\"
: 큰따옴표를 나타냅니다.\'
: 작은따옴표를 나타냅니다.\\
: 백슬래시를 나타냅니다.
이러한 이스케이프 문자는 아래와 같이 활용될 수 있습니다.