[Python] 01. 자료형 - 문자열 자료형(2)
지난 포스팅에서는 문자열이 무엇인지에 대해 배웠는데요,
이번 포스팅에서는 문자열의 인덱싱과
슬라이싱, 포매팅에 대해 배워보도록 하겠습니다.
문자열 인덱싱(indexing)이란?
인덱싱(indexing)이라는 단어는 무언가를 가리킨다는 뜻으로,
문자열 인덱싱은 문자열에 번호를 매겨 특정 문자를 찾는 것을 말합니다.
대게 숫자를 세면 1번부터 세지만 파이썬에서 문자열의 인덱스는 0부터 시작합니다.
만약 아래와 같은 문자열 변수가 있을 때 y의 인덱스 번호는 몇 번일까요?
string = "Hello Python"
7번 입니다!
왜 7번일까요??? 0부터 순서대로 센다고 해도 y는 6번째에 있는 글자인데 말이죠.
이는 인덱스가 공백을 포함해서 세기 때문입니다.
Hello와 Python 사이에는 공백 한 칸이 있기 때문에
순서대로 번호를 세면 y는 7번째가 되는 것이죠.
그렇다면 위의 예시에서 2번째 문자열을 찾기 위해서는 어떻게 해야할까요?
바로 string[2]를 사용하면 됩니다.
변수명[번호]는 문자열 안의 특정한 값을 뽑아내는 역할을 합니다.
이 작업이 바로 인덱싱입니다.
인덱싱의 예시를 몇가지 더 봐보죠.
string = "Python is best!"
string[0]
>> 'P'
string[8]
>> 's'
string[-2]
>> 't'
string[-2]가 t라고 하는데 마이너스를 붙이는건 또 무슨 의미일까요?
번호에 마이너스를 붙이게 되면 인덱스를 뒤에서부터 센다는 뜻입니다.
때문에 마지막에서 두번째 문자는 't'이기 때문에 string[-2]는 't'가 되는 것이죠 ! !
문자열 슬라이싱이란?
그렇다면 문자열이 가지고 있는 번호를 활용해서 어떤 일을 할 수 있을까요??
a = "Life is too short"
위와 같은 문장이 있을 때 Life 라는 단어를 만들고 싶다면
b = a[0] + a[1] + a[2] + a[4] 를 사용하면 됩니다!
( 앞서 포스팅에서 배웠던 문자열 더하기 기억하시죠??? )
이렇게 단순하게 접근할 수도 있지만, 파이썬에서는 더 좋은 방법을 제공합니다.
그 방법이 바로 슬라이싱(Slicing)입니다.
위의 방법처럼 한 문자씩 가져와도 되지만
연속되는 문자열을 가지고 오고 싶을 때는
다음과 같이 처리할 수 있습니다.
a = "Life is too short"
a[0:4]
>> 'Life'
위의 예시를 보면 알 수 있는데 슬라이싱을 할 때는 중요한 점이 하나 있습니다.
바로 [시작번호 : 끝번호] 끝 번호는 포함하지 않는다는 것입니다.
때문에 a[0:4]가 뜻하는 것은 a 문자열 "Life is too short" 문장에서
인덱스 0부터 4를 포함하지 않는 3까지의 문자를 뽑아낸다는 뜻입니다.
공백 문자 역시 다른 문자들과 동일하게 취급하기 때문에
"Life"와 "Life "는 다른 문자열입니다.
슬라이싱의 특징은 여러개가 있는데요,
우선 시작 번호가 무조건 0일 필요는 없습니다.
a[3:5] 이런식으로도 슬라이싱 할 수 있다는 의미죠.
그리고 a[시작 번호 : 끝 번호]에서
시작 번호를 생략하면 문자열의 처음부터 끝 번호까지,
끝 번호를 생략하면 시작 번호부터 끝 번호까지 가져온다는 의미입니다.
또한 인덱싱과 마찬가지로 마이너스( - ) 기호를 사용할 수 있습니다.
a[19 : -7] 이렇게도 사용할 수 있습니다.
19번째 인덱스부터 문자열을 가져오되 -7은 포함되지 않은 채로 말이죠!
문자열 포매팅(Formatting)
문자열에서 또 하나 알아야 할 것은 문자열 포매팅입니다.
문자열 안에서 특정한 값을 바꿔줘야 할 경우가 있을 때
이것을 가능하게 해주는 것이 문자열 포매팅입니다.
포매팅의 방법은 여러가지가 있는데요,
특정 값을 바꿔줄 때 사용하는 코드를 문자열 포맷 코드라고 합니다.
코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal %(문자 % 자체) |
위의 문자열 포맷 코드를 사용해서 문자열, 문자, 정수, 소수 등
여러가지 자료형을 포매팅할 수 있습니다.
1. 숫자 바로 대입
문자열 안에서 숫자를 넣고 싶은 자리에 %d 문자를 넣어주고,
삽입할 숫자는 가장 뒤에 있는 % 문자 다음에 써주는 방법입니다.
"I eat %d apples." % 3
>> "I eat 3 apples."
2. 문자열 바로 대입
숫자 뿐만 아니라 문자열도 넣을 수 있는데요,
방법은 숫자 대입과 똑같습니다.
다만 한가지 다른 점은 파이썬에서 문자열은
큰따옴표나 작은따옴표를 사용해야 인식하기 때문에
문자열을 대입할 때는 앞서 배운 것처럼
큰따옴표나 작은따옴표를 반드시 써줘야합니다.
"I eat %d apples." % "four"
>> "I eat four apples."
3. 숫자 값을 나타내는 변수로 대입
숫자나 문자열을 바로 대입하지 않고 변수로 만들어서 대입해주는 방법도 있습니다.
number = 3
"I eat %d apples." % number
>> "I eat 3 apples."
str = "four"
"I eat %d apples." % str
>> "I eat four apples."
4. 2개 이상의 값 넣기
그렇다면 여러 개의 값을 넣고 싶을 땐 어떻게 해야할까요?
number = 10
day = "two"
"I ate %d apples. so I was sick for %s days." % (number, day)
>> "I ate 10 apples. so I was sick for two days."
위의 예문을 보면 알 수 있듯이 넣고싶은 값 의 순서에 맞게 % 다음 괄호 안에 콤마로 구분하여
각각의 값을 넣어주면 됩니다!
앞서 말했던 것처럼 문자열 포맷 코드에는
위의 예제에서 사용한 것보다 더 많은 포맷 코드가 있습니다.
%s와 %d 등의 포맷 코드는 문자열 안에 어떤 값을 삽입하기 위해 사용하지만
포맷 코드는 숫자와 함께 사용했을 때 더 유용하게 사용할 수 있습니다.
때문에 다음 포스팅에서는 문자열 포맷 코드에 관련해서
좀 더 깊게 알아보도록 하겠습니다!