╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

Python/Python 기초

[Python] 변수의 선언과 자료형 3 (문자열)

재안안 2022. 2. 22. 17:08

이번엔 변수 자료형의 종류중 하나인 문자열에 대해서 알아보겠다.                                                                    

문자열은 string이라고 하며 주로 사용시엔 str이라고한다.

문자열은 문자(character)들의 집합이다. 어떠한 단어를 저장 할 수도 있고 문장을 저장 할 수도 있다. 그중에 가장 큰 특징은 따옴표와 쌍따옴표들의 사이에 있다는 것이다. 따옴표 사이에 있는 모든것을 문자 처리한 집합이다.

예를 들어보자면

 

'string'

"1234"

'''jaeano jounal'''

"""string example"""

 

3줄 모두 문자열이고 문자들의 집합이다. 'string'은 문자(s, t, r, i, n, g)들이 모여있어 우리에게 string으로 읽히는 것이다. 이와 마찬가지로 "1234" 는 숫자 1,234가 아니라 문자(1, 2, 3, 4)들이 모여있다고 생각하는게 맞다.

 

3번과 4번처럼 문자열을 따옴표와 쌍따옴표 3개씩 써서 나타낼 수도 있다.

따옴표 사이에 있는 모든 것들을 문자 처리하는데 이는 공백도 포함한다. 쉽게 말하자만 공백 문자라고 escape 문자가 있다.

공백 문자는 나중에 생각하고 아래의 예제를 보자. 왼쪽이 실행코드 오른쪽이 실행 결과이다.

 

 

 

그리고 주의사항으로 문자열과 다른 자료형을 혼돈하면 안된다는 것이다.

이는 개념 하나만 확실히 하면 해결된다.

 

아래의 예제를 통해 확인해보자.

 

int와 string 구분 예제

변수 s5를 선언해 숫자 1,234를 넣었고

type()함수를 사용해 s2과 s5의 자료형을 출력했다.

 

오른쪽의 실행 결과를 보면

s2는 string

s5는 int이다.

이는 따옴표의 존재 유무 때문이다. 따옴표로 둘러쌓여있으면 해당 데이터는 문자열이고 없으면 다른 종류이다.

 

 

다음으로 문자열의 인덱스에 대해서 설명하겠다.

문자열은 문자들의 나열이다.

'string'이 문자들의 모임이지만 s-t-r-i-n-g라는 순서가 있다.

만약 순서가 없으면 s, t, r, i, n, g은 항상 변해 우리는 string이라고 읽을 수 없을 것이다.

여기서 문자들의 순서를 문자열 인덱스이라고 한다.

문자열의 인덱스는 문자열을 구성하는 모든 문자에 부여한 번호이고 문자열 인덱스의 시작번호는 0이다.

파이썬에서 정수의 시작은 0이다.

 

첫번째 줄의 s1 = 'string'은 아래의 구조로 돼있다.

 

string 아래의 숫자들은 각 문자의 인덱스를 뜻한다.

s1안에서 문자들의 순번이라고 생각하면 된다.

문자에게 주어지는 인덱스 번호는 왼쪽에서 오른쪽으로 오름차순이다.

 

실제로 확인해보면 아래와 같이 나온다.

 

문자열 인덱스 예제

 

문자열에서 문자들은 순서에 따라 번호를 가지고 있으므로 그 번호를 부르면 그 번호를 가지고 있는 문자가 응답한다.

 

그 방법이 문자열이름 + [숫자] 이다. 그 문자가 가지고 있는 또다른 이름 이라고 생각해도 좋다.

여기서는 "s1[0]"으로 사용됐는데 "s1의 0번째 문자"라는 뜻이다.

주로 문자열에서 원하는 문자를 가르킬 때 많이 사용된다. 

 

인덱싱의 번호는 왼쪽부터 오름차순으로 주어진다.

그런데 만약 문자열이 매우 긴 상태에서 뒷 쪽에 있는 문자를 사용하고 싶다면?

 

인덱스의 시작을 왼쪽이 아니라 오른쪽부터 시작하는 방법도 있다.

인덱스 앞에 -(마이너스)를 붙여주는 것이다.

그런데 이때에는 -0부터 시작이 아니라 -1부터 시작이다.

 

아래의 에제를 통해 설명하겠다.

 

 

s1[-1]s1의 역방향에서 1번째 문자라는 뜻이고

s[-1]s[6] 같다. (둘다 문자 g를 가르킨다)

 

 

문자열에서 하나의 문자만 선택하는 것이 아닌 여러개의 문자도 선택 할 수 있다.

이를 문자열 슬라이싱이라고 하며 간단히 말하자면

인덱스를 통해 문자열에서 여러개의 문자들을 선택하는 것이다.

문자열 슬라이싱의 사용 방법은 문자열이름[시작인덱스:종료인덱스:인덱스증감값]이다.

 

예를 들자면 s1[0:2:1]s1에서 0번 문자부터 2번 문자까지 추출해줘 이다.

 

여기서 인덱스 증감값은 생략이 가능한데 생략하면 1이 자동으로 선택된다.

여기서 주의할 점이 종료 인덱스는 추출하지 않으며 종료 인덱스-1 까지만 추출한다.

 

숫자 시작이 1이 아니라 0이기에 마지막도 한칸 땡겨진다고 생각하면 편하다.

 

아래의 예제를 통해 문자열 슬라이싱 사용법을 설명하겠다.

 

29 : 문자열 s1의 0번 인덱스부터 2번 인덱스까지 출력해줘 (2번 인덱스까지지만 인덱스 0 1 2 에서 2는 포함x)

30 : 문자열 s2의 0번 인덱스부터 3번 인덱스까지 출력해줘 (인덱스 0 1 2 3에서 3은 포함x)

31 : 문자열 s3의 0번 인덱스부터 5번 인덱스까지 출력해줘 (인덱스 0 1 2 3 4 5에서 5는 포함x)

32 : 문자열 s3의 7번 인덱스부터 14 인덱스까지 출력해줘 (인덱스 7 8 9 10 11 12 13 14에서 14는 포함x)

33 : 문자열 s4의 7번 인덱스부터 14 인덱스까지 출력해줘 (인덱스 7 8 9 10 11 12 13 14에서 14는 포함x)

 

 

여담으로 s1[0:2:1]과 s1[0:2]는 같다.

만약 특정한 경우가 아닐경우 인덱스 증감값은 보통 1이다.                              

인덱스 증감값이 1인경우 문자열이름[시작인덱스:선택할문자개수]로 생각할 수 있다.

 

 s1의 0번 문자부터 2개를 출력해줘. (s1의 0번째 부터 2-1번째 인덱스까지 하나씩 추출해줘.)

st가 나온다.