본문 바로가기

파이썬

04/24 파이썬 2 - 문자열, 인덱싱, 슬라이싱

1) 문자열

 

C/C++에서는 'a', 'b', 'c'와 같은 알파벳 글자 하나를 '문자'라고 하며 'jaechul' 같이 두 개 이상의 문자로 구성된 것을 '문자열(house)'이라고 한다.

하지만 파이썬은 문자와 문자열을 구분하지 않고 작은따옴표나 큰 따옴표 안에 있는 문자의 모음을 문자열이라고 한다.

 

jaechul = 'happy'
string = 'a'
string1 = "b"
string2 = "abc"

위 코드처럼 변수가 문자열을 가리키고 있으면 변수를 통해 해당 문자열을 참조할 수 있다.

 

파이썬 프롬프트로 화면에 값을 출력하는 함수인 print를 사용하여 jaechul이 가리키는 값을 출력해보자.

 

>>>print(jaechul)
happy
>>>

 

 

 

2) 문자열 인덱싱 및 슬라이싱

 

>>>mystring = 'hi jaechul'
>>>len(mystring)
10
>>>

위 코드를 실행하면 10이라는 값이 반환되는데, 'hi jaechul'이라는 문자열이 총 10개의 글자로 구성되어있다는 의미다.

그런데 왜 문자는 분명 9개인데 값으로 10이 나올까?

 

이유는 공백(띄어쓰기)도 문자로 간주되기 때문이다.

 

그렇다면 'hi jaechul'이라는 문자열에서 'hi'라는 글자만 따오고 싶다면 어떻게 해야 할까?

 

이때 유용한 기능이 '슬라이싱(slice)'이다.

 

>>>mystritg[0:2]
'hi'
>>>

위 코드에서 [0:2]라는 표현은 슬라이싱할 범위를 정하는 것이다.

0은 범위의 시작 위치를, 2는 범위의 끝 위치를 의미한다.

 

참고로 프로그래밍에서는 범위가 0부터 시작하기 때문에 시작 값이 1이 아니라 0으로 돼 있다.

 

문자열 인덱싱 예

위 그림은 'hi jaechul'이라는 문자열의 각 글자 사이에 인덱스를 붙인 것이다.

 

이제 조금 응용하여 'jaechul'만을 가져오려면 어떻게 해야 할까?

 

>>>mystring[3:10]
'jaechul'
>>>

 

위와 같이 코드를 작성하면 'jaechul'만을 가져올 수 있다.

 

위 코드를 작성해본 사람을 느꼈겠지만 맨 마지막 글자 위치를 세기가 귀찮다.

이때 슬라이싱에서 시작값 또는 끝값을 생략하면 알아서 해당 문자열의 시작과 끝을 의미한다.

 

위 코드를 좀 더 쉽게 작성하면 다음과 같다.

 

>>>mystring[3:]
'jaechul'
>>>

 

인덱싱에서는 양수만을 사용할 수 있는 것은 아니다. 음수도 사용할 수 있다.

 

음수 인덱싱 예

 

위 이미지처럼 음수로도 인덱싱을 할 수 있다.