안녕하세요 모닝수잔입니다 :) 파이썬에서 문자열은 자체 "함수"를 가지고 있는데 함수란 무엇인지, 어떻게 사용할 수 있는지 자세히 한번 알아보겠습니다.
함수란 무엇일까요? ▶ 두 변수 x, y에 대하여 x의 값이 정해짐에 따라 y의 값이 오직 하나씩 정해지는 관계가 있을 때, y를 x의 함수라고 한다.
다시 말해서, 함수는 일종의 정해진 식인데 어떤 변수 값을 넣느냐에 따라서 결과 값도 달라집니다. 예를 들면, "Happy Holidays"라는 문장이 있을 때, 특정 알파벳이 몇 개 들어있는지 알고 싶어요. 처음부터 "H"를 찾아라라고 코딩을 짤 수도 있겠지만, 생각해보니까 "A"도 몇 개 들어있는지 알고싶네요? 그렇다면 그때그때 코딩식을 짠다는건 굉장히 비효율적인 일이 될겁니다. 이때 아예 함수를 이용해서 알파벳을 변수로 놓고 변수에 "H"를 넣으면 H의 갯수를 알려주고, "A"를 넣으면 A의 갯수를 알려준다면 편하지 않을까요?
이처럼, 문자열은 자체적으로 함수라는 것을 가지고 있는데 어떤 함수들을 가지고 있는지 살펴보겠습니다.
Count 함수
A변수.Count(B 변수) = A변수에서 B변수의 갯수를 세어라.
벌써 이름에서 느낌오셨을 것 같은데, Count는 위에서 예시로 살펴본 특정 원소의 갯수를 세는 함수입니다. 아래 화면을 보시면 Example이라는 변수를 만들었고 Happy Holidays라는 값을 부여해줬습니다. 그리고 여기에 Count 함수를 이용해서 Example 변수가 가지고 있는 값 = Happy Holidays에 "H"가 몇 개 들어있는지 세어보겠습니다.
Example.count("H")
※ 함수를 사용할 때는 변수 다음에 "."을 찍고 함수명을 써주시면 됩니다. 형식은 → .함수이름() ← 가 됩니다. 여기서 ()는 대입할 변수가 있을 경우에는 그 변수를 넣어주고, 대입할 변수가 없을 경우에는 공란으로 두시면 됩니다.
그/런/데,
아래 화면 빨간칸에서 뭔가 특이점을 찾으셨나요? 그렇죠. 대소문자가 구분됩니다. "H"를 count했을 때는 2라는 값이 정확하게 출력되었는데, "h"를 count했을 때는 0이라는 값으로 출력되었죠. 그럼 이럴 때는 어떻게 해야 할까요?
Upper, Lower 함수
변수.upper() = 변수에 있는 영어 소문자를 전부 대문자로 바꿔라.
변수.lower() = 변수에 있는 영어 대문자를 전부 소문자로 바꿔라
소문자를 대문자로 올려주는 것은 Upper, 대문자를 소문자로 내려주는 것은 Lower라고 기억하시면 쉽습니다. 코딩식을 짜야하는데 대소문자를 구분해줘야할 때, 아예 대문자나 소문자로 통일해주면 데이터 추출의 정확성을 높여줄 수 있습니다. Example 변수를 다시 한번 가져와볼까요? 아래 화면 빨간칸을 통해 결과를 확인해주세요 :)
Example.upper() Example.lower()
이번에는 특정 알파벳이나 단어를 다른 알파벳이나 단어로 대체해보겠습니다. 함수명이 딱 떠오르시나요?
Replace 함수
변수.replace(A,B) = 변수에 있는 A를 B로 바꿔라
Example.replace("Happy", "Wonderful")
Split 함수
변수.split(A) = 변수에 있는 값을 A를 기준으로 쪼개라.
Example.split()
Replace 함수가 너무 쉬워서 다른 함수도 아예 같이 다뤄보겠습니다. 특정 원소를 기준으로 변수 값을 나눠주는 Split 함수입니다. 예를 들어, "Happy Holidays"라는 값을 출력했다고 합시다. 그런데 우리가 원하는건 Holidays가 아니라 Holidays를 수식하는 형용사 Happy만 추출하고 싶은거에요. 그럴때는 어떻게 해야할까요? 그렇죠 "공백"을 기준으로 나눠서 첫번째 값만 가져오면 되겠군요?
여기까지 문자열의 함수 4종류를 알아봤습니다. 더 많은 종류가 있지만 대표적인 함수들만 살펴봤답니다. 혹시, 마지막 화면 빨간칸에서 split 함수로 쪼개줬을 때 값이 [] 중괄호 안에 들어있다는 사실 확인하셨나요? 이 때 결과값이 하나가 아니라 "Happy"와 "Holidays"라는 2개 이상 출력되었기 때문에 [] 중괄호 안에 담겼답니다. 또다른 자료형인 "리스트"라는 유형으로 추가 포스팅을 통해 다뤄보도록 하겠습니다. 이것으로 포스팅을 마칩니다.