안녕하세요 모닝수잔입니다 :)
파이썬을 이해하려면 가장 기초가 되는 자료형에 대한 이해가 필요합니다. 지난 포스팅은 자료형의 이해라는 주제로 다뤄봤으니 오늘은 좀 더 상세하게 자료형 중에서도 문자열의 세부적인 내용을 대해 알아보겠습니다.
자료형이라는 말은 우리가 Uipath - RPA 에서 다뤘던 데이터 유형(Data Type)이라는 말과 같습니다. ▶ 즉, 문자열은 데이터 유형입니다. 우리가 컴퓨터에게 전달하는 여러가지 데이터 중에서도 "문자" 형식으로 된 데이터를 문자열이라고 하는거죠. 문자열을 주어진 그대로 사용할 수도 있지만 자르고 붙이고 일부를 수정해서 사용할 수도 있잖아요? ▶ 즉, 문자열 인덱싱/슬라이싱/포매팅은 바로 이러한 데이터 조작에 대한 내용입니다.
결론부터 말씀드리자면 "인덱싱(Indexing)"은 색인으로 데이터를 찾는 것, "슬라이싱(Slicing)"은 색인으로 데이터를 나누는 것, "포매팅(Formatting)"은 특정 부분을 다른 부분으로 교체하는 것입니다.
예제를 통해 하나씩 세세하게 살펴보겠습니다. Example이라는 변수를 만들고 "Susan's morning story."라는 문장을 값으로 부여해주겠습니다. Example = "Susan's morning story."라고 코드를 작성하면 Example이라는 변수에 "Susan's morning story."라는 값을 주게 되죠.
※ 변수명과 변수값
Example = "Susan's morning story."는 <변수명 = 변수값>의 구조입니다. 여기에서 Example은 변수명, "Susan's morning story."는 변수값이 되죠. 변수명은 원하는대로 부여해주셔도 되는데요, 다만 나중에 해당 변수에 어떤 값이 있는지는 알 수 있을 정도로 지정해주시는 것이 좋습니다. 예를 들어, 변수값이 과일 이름이면 변수명이 fruits면 좋겠죠? 변수값에 apple, pineapple, banana 뭐가 들어있어도 과일이라는 사실은 헷갈리지 않을테니까요. 또한, 변수값은 얼마든지 바꿔줄 수 있습니다. 처음에는 Example이라는 변수에 "Susan's morning story."이라는 값을 줬더라도 다음에 다시 "Subin's morning story."라는 값을 주면 Example의 변수값이 변합니다. 말그대로 변하는 것이 "변수"니까요.
인덱싱
Example[2]
변수명을 적고 중괄호[]를 해준 뒤, 그 안에 인덱스(숫자)를 넣으면 변수값에서 해당 인덱스(숫자)에 해당되는 값만 추출할 수 있습니다. 아래 화면 빨간칸을 보시면 변수 Example을 출력했더니 Susan's morning story가 나왔고 Example[2]를 출력했더니 s가 나왔죠? ▶ 즉, 변수 Example의 변수값 중에서도 2번째 데이터를 추출한 것이랍니다.
인덱싱은 특정 위치의 변수값을 추출한다.
※ 인덱스는 0부터 시작한다.
Susan's morning story에서 2번째면 u인데 왜 s가 출력되었을까요? 그건 바로 인덱스는 0부터 시작하기 때문입니다. 0번째가 S, 1번째가 u, 2번째가 s.. 순서가 되니까 꼭 기억해주세요!
※ 뒤에서부터 인덱싱을 하는 경우 - 를 붙인다.
엄청 긴- 문장이 있는데 가장 마지막 번째의 데이터만 알고 싶다면 어떻게 해야 할까요? ▶ 변수명[-1]을 해주시면 됩니다. 뒤에서부터 2번째 데이터를 알고 싶다면 변수명[-2]라고 해주시면 되겠죠. 이때는 0부터 가산되지 않으니 참고해주세요!
슬라이싱
Example[0:3]
변수명을 적고 중괄호[]를 해준 뒤, 그 안에 시작점 인덱스(숫자)를 넣고 콜론(:)을 넣고 끝점 인덱스를 넣으면 변수값에서 해당 범위 안에 있는 덩어리 값을 추출할 수 있습니다. 아래 화면 빨간칸을 보시면 변수 Example[0:3]을 출력했더니 Sus가 나왔죠? ▶ 즉, 변수 Example의 변수값 중에서도 0번째부터 2번째까지의 데이터 덩어리를 추출한 것이랍니다.
추가로 아래 화면 빨간칸의 line 7, 8을 보시면 인덱스 없이 콜론(:)만 넣은 경우 전체 데이터를 출력하고, 시작점 인덱스와 콜론(:)만 넣은 경우 시작점 인덱스부터 끝까지 덩어리로 추출한다는 사실을 확인하실 수 있습니다. 반대로 아래 화면에는 없지만 콜론(:)과 마지막 인덱스만 넣은 경우 처음부터 마지막 인덱스까지 덩어리로 추출하겠구나라고 추론이 가능하시겠죠? :)
슬라이싱은 특정 위치의 변수값을 덩어리로 추출한다.
※ 슬라이싱은 마지막 인덱스 -1에서 끝난다.
Susan's morning story에서 [0:3]이면 0번째에서 3번째니까 Susa인데 왜 Sus만 출력되었을까요? ▶ 슬라이싱에서 마지막 인덱스 값은 출력되지 않습니다. 그래서 마지막 인덱스 -1의 데이터까지 출력된다고 보시면 된답니다.
※ 인덱싱 vs. 슬라이싱
인덱싱과 슬라이싱의 차이는 특정 위치의 데이터를 단 하나만 가져오느냐 덩어리로 가져오느냐의 차이입니다. 슬라이싱은 범위를 지정해서 데이터를 추출할 수 있습니다.
포매팅
"%s's morning story" % "Soobin"
마지막으로 포매팅입니다. 인덱싱, 슬라이싱과 달리 인덱스로 구분하지 않기 때문에 성향이 조금 다른데요, 포매팅은 %로 시작되는 포맷 코드를 사용해서 특정 데이터를 다른 데이터로 바꿔주는데 문자열 포맷 코드 몇가지를 살펴보겠습니다.
문자열 포맷 코드
%s : 문자열(String)
%c : 문자열 1개(Character)
%d : 정수(Integer)
%f : 부동 소수(Floating-point)
%% : % 기호
포매팅은 포맷 코드를 사용한 부분의 특정 데이터를 다른 데이터로 교체해줍니다. 다만 각자 자료형에 맞게 포맷 코드를 부여해줘야 하는데요, 아래 화면 빨간칸 예제를 보시면 예제문 자체가 문자열이기 때문에 포맷 코드도 그에 맞게 %s를 사용해줬습니다. Susan's morning story라는 문장에서 Susan이라는 문자열을 자료형에 맞춰서 %s라는 포맷 코드로 바꿔줬기 때문에 이제 Susan은 얼마든지 다른 문자열로 교체될 수 있습니다. 이때 교체되는 데이터는 % 데이터로 부여해주면 됩니다. 아래 화면 빨간칸 예제를 보시면 Susan을 대신에서 Soomin, Soobin, Soohyeon등 다양한 대체되는 문자열 데이터를 % 뒤에 넣어줬죠. 이렇게 특정 부분만 다르게 데이터를 여러번 추출해야할 때 포매팅은 큰 도움이 될 수 있답니다. 변수와 비슷하지만 전체가 아닌 특정 부분만 바꿔준다는 차이점이 있죠 :)
인덱싱/슬라이싱/포매팅 모두 별거 아닌 것 같지만 익숙해지면 나중에 여러 데이터를 추출하고 조작해야할 때 큰 도움을 받을 수 있답니다. 그럼 이것으로 오늘의 포스팅을 마치겠습니다.