파이썬 독학/입문 강의

[파이썬독학강의] 5.6 파이썬 문자열 함수(function)_문자열 관련 함수

데니 by danny 2023. 2. 5. 03:17
반응형

파이썬 문자열 함수
파이썬 문자열 함수

 

님들, 안녕하세요. 14년차 IT 개발자 데니예요. 지난 시간에 파이썬 문자열 포매팅 방식 중에 가장 최근(파이썬 3.6버전)에 나온 f-string 방식에 대해서 배워보았어요. 이번 시간은 파이썬에서 문자열을 조작하기 위해서 제공하는 다양한 문자열 관련 함수를 알아볼 거예요. 문자열 조작이란 1개 이상의 문자열을 가지고 자르고, 바꾸고, 합쳐서 우리가 원하는 새로운 문자열을 만드는 과정이라고 생각해 주시면 돼요.

 

 

5.6 파이썬 문자열 함수(function)

닐들과 이번 시간에 다룰 문자열 함수는 총 12개예요. 문자열 관련 함수의 종류는 12개보다 많아요. 파이썬 입문님들께서 모든 문자열 관련 함수를 학습하시고 실습하시려면 많은 시간이 소요되고, 그중에는 파이썬을 하시면서 평생 단 한 번도 사용하지 않는 함수도 포함되기 때문에 정말 필수적으로 알고 계시고, 현업에서도 가장 많이 사용되는 12개 함수를 중심으로 설명과 실습을 진행해보려고 해요.

 

 

  ▶ 함수란

문자열 관련 함수는 문자열을 조작할 때 사용하는 함수예요. 결국 함수예요. 그럼 우리는 함수란 무엇인지 부터  이해하고 가야 해요.

함수란 입력 값을 받아서 어떤 일을 수행한 다음 그 결과인 출력 값을 반환하는 기능을 정의한 것이에요. 님들께 함수에 대한 의미를 조금 더 쉽게 이해시켜 드리고자 물리적으로 표현한 그림이 아래와 같아요.

파이썬 함수란?
파이썬 함수란?

  위 그림을 보시면 네모난 박스 안에 어떤 기능을 하는 기계 장치가 있고, 박스 왼쪽 위에 입구와 오른쪽 아래에 출구가 있어요. 입구에 나무와 철을 넣고 함수를 작동시키니 출구로 삽이 나왔어요. 이 함수는 나무와 철을 받아서 삽을 만드는 일을 수행한 후, 우리에게 삽을 반환해 주었어요.

 

 

▶ 문자열 관련 함수란?

문자열 관련 함수란 문자열 자료형이 자체적으로 함수를 가지고 있어요. 즉, 파이썬이 문자열 관련 함수를 제공해 주기 때문에 우리가 따로 문자열 조작을 위한 함수를 정의할 필요는 없어요. 우리는 파이썬이 제공해 주는 함수를 잘 사용하기만 하면 돼요. 사용법은 문자열 변수명 뒤에 '.'을 붙인 다음에 함수 이름을 타이핑하시면 돼요. 지금부터 실습을 진행해 볼게요.

 

 

▶ count()함수_문자 개수 세기

 문자열 중에 어떤 문자나 문자열이 몇 개나 포함되어 있는지 개수를 세주는 함수예요. 

입력 값 : 문자 또는 문자열

출력 값 : 문자열 중에 입력 값의 개수

1
2
3
4
5
6
7
8
>>> str1 = 'banana'
>>> str1.count('n')
2
>>> str2 = 'Life is too short, you need Python'
>>> str2.count('o')
5
>>> str2.count('ee')
1
cs

라인[1]은 str1 변수에 'banana'를 대입했어요.

라인[2]은 변수명 str1에 '.'를 찍고 count()함수를 사용하고 있어요. count() 함수 입력 값에 'n'을 주었어요.

라인[3]은 count()함수가 'banana' 문자열에서 'n'의 개수를 세서 숫자 2를 반환해 주었어요.

라인[4]~[6] count()함수가 'Life is too short, you need Python' 문자열에서 문자 'o'의 개수인 숫자 5를 반환해 주었어요.

라인[7]~[8] count()함수가 'Life is too short, you need Python' 문자열에서 문자열 'ee'의 개수인 숫자 1을 반환해 주었어요.

 

 

  ▶ find() 함수_문자 위치 찾기

문자열 중에 원하는 문자나 문자열의 위치를 찾아주는 함수예요.

입력 값 : 어떤 문자 혹은 문자열

출력 값 : 문자열 중에 입력값이 처음으로 나오는 위치 index 값

 

1
2
3
4
5
6
7
>>> str1 = 'Life is too short'
>>> str1.find('o')
9
>>> str1.find('s')
6
>>> str1.find('z')
-1
cs

라인[1]은 'Life is too short' 문자열을 str1 변수에 대입했어요. 해당 문자열의 인덱스는 아래 그림과 같아요. 문자열 슬라이싱(slicing)할 때 배우신 거 기억하실 거예요. 문자열은 자체적으로 순차적인 순번을 가지고 있어요. 문자열 처음부터 시작할 때는 index는 0부터 시작하고, 끝에서부터 시작할 때는 -1부터 시작된다는 거 이미 학습하셔서 알고 계실 거예요.

파이썬 문자열 인덱스 위치1
파이썬 문자열 인덱스 위치1

라인[2]는 str1 문자열 변수명에 '.'를 붙이고 find() 함수를 호출했어요. 입력 값은 'o'을 주었어요.

라인[3]은 find() 함수가 문자 'o'의 위치 9를 반환해 주었어요. 문자 'o'는 'Life is too short' 문자열의 위치 9, 10, 14에 존재해요. find() 함수는 해당 문자열에서 입력 값이 가장 처음으로 나오는 위치를 반환해 준다는 거 잊으시면 안 돼요.

라인[4]~[5]는 's'가 가장 처음으로 나오는 위치인 6을 반환해 주었어요.

라인[6]~[7]은 'z'가 해당 문자열에 존재하지 않기 때문에 -1을 반환해주었어요. find() 함수는 입력 값이 해당 문자열에 존재하지 않으면 항상 -1를 반환해주고 있어요.

 

 

  ▶ index() 함수_문자 위치 찾기

문자열 중에 원하는 문자나 문자열의 위치를 찾아주는 함수예요. find()함수 동일한 기능을 해요. 단, 찾는 문자가 없는 경우 find()함수는 -1 값을 반환해 주지만, index() 함수는 오류를 발생시켜요.

입력 값 : 어떤 문자 혹은 문자열

출력 값 : 문자열 중에 입력값이 처음으로 나오는 위치 index 값

1
2
3
4
5
6
7
8
>>> str1 = 'You need Python'
>>> str1.index('e')
5
>>> str1.index('z')
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
ValueError: substring not found
 
 
 

라인[1]은 'You need Python' 문자열을 str1 변수에 대입했어요. 해당 문자열의 위치 index는 아래 그림과 같아요. 참고 주세요.

파이썬 문자열 인덱스 위치2

라인[2]는  str1 문자열 변수 다음에 '.'를 입력하고 index() 함수를 사용했어요.  입력 값으로 문자 'e'를 주어 해당 문자의 위치를 찾고 있어요.

라인[3]은 index() 함수가 문자 'e'의 위치를 찾아서 3을 반환했어요.

라인[4]~[7]은 index() 함수가 'You need Python' 문자열에서 문자 'z'의 위치를 찾고 있어요. 해당 문자열에서 문자 'e'는 존재하지 않으므로 오류를 발생시켰어요. find() 함수였으면 -1을 반환했을 테지만, index() 함수는 오류를 발생시킨 점을 꼭 기억해 주세요.

 

 

  ▶ upper() 함수_소문자를 대문자로 바꾸기

영문 소문자를 대문자로 바꿔주는 함수예요.

입력 값 : 없음

출력 값 : 대문자 영문자열

1
2
3
4
>>> str = 'hello'
>>> str.upper()
'HELLO'
>>>
cs

라인[1]~[3]은 'hello' 소문자 영문자열 변수명에 '.'를 붙이고 upper() 함수를 호출하였어요. upper() 함수가 'HELLO' 대문자 영문자열을 반환하였어요.

 

 

  ▶ lower() 함수_대문자를 소문자로 바꾸기

영문 대문자를 소문자로 바꿔주는 함수예요.

입력 값 : 없음

출력 값 : 소문자 영문자열

1
2
3
4
>>> str = 'HELLO'
>>> str.lower()
'hello'
>>>
cs

라인[1]~[3]은 'HELLO' 대문자 영문자열 변수명에 '.'를 붙이고 lower() 함수를 호출하였어요. lower() 함수가 'hello' 소문자 영문자열을 반환하였어요.

 

 

  ▶ lstrip() 함수_왼쪽 공백 지우기

문자열 기준으로 왼쪽에 존재하는 공백을 지워주는 함수예요.

입력 값 : 없음

출력 값 : 왼쪽 공백이 지워진 문자열

1
2
3
4
>>> str = '    hello    '
>>> str.lstrip()
'hello    '
 
cs

라인[1]은 공백이 포함된 문자열을 str 변수에 대입했어요. 

라인[2]~[3]은 lstrip() 함수를 사용하여 왼쪽 공백이 제거된 문자열을 반환받았어요.

 

 

  ▶ rstrip() 함수_오른쪽 공백 지우기

문자열 기준으로 오른쪽에 존재하는 공백을 지워주는 함수예요.

입력 값 : 없음

출력 값 : 오른쪽 공백이 지워진 문자열

1
2
3
4
>>> str = '    hello '
>>> str.rstrip()
'    hello'
>>>
cs

라인[1]은 공백이 포함된 문자열을 str 변수에 대입했어요. 

라인[2]~[3]은 rstrip() 함수를 사용하여 오른쪽 공백이 제거된 문자열을 반환받았어요.

 

 

  ▶ strip() 함수_양쪽 공백 지우기

문자열 기준으로 양쪽에 존재하는 공백을 지워주는 함수예요.

입력 값 : 없음

출력 값 : 양쪽 공백이 지워진 문자열

1
2
3
4
5
>>> str = '    hello    '
>>> str.strip()
'hello'
>>>
 
cs

라인[1]은 공백이 포함된 문자열을 str 변수에 대입했어요. 

라인[2]~[3]은 strip() 함수를 사용하여 양쪽 공백이 제거된 문자열을 반환받았어요.

 

 

  ▶ replace() 함수_문자열 바꾸기

문자열 중에서 어떤 문자나 문자열을 다른 문자나 문자열로 바꿔주는 함수예요.

입력 값 : 변경 전 문자 또는 문자열, 변경 후 문자 또는 문자열

출력 값 : 바뀐 문자열

1
2
3
4
5
>>> str = 'Life is too short'
>>> str.replace('Life''Your leg')
'Your leg is too short'
>>>
 
cs

라인[1]은 'Life is too short' 문자열을 str 변수에 대입했어요.

라인[2]은 replace() 함수에 두 개의 입력 값을 주었어요. 첫 번째는 변경 전 문자열인 'Life'이고, 두 번째는 변경 후 문자열인 'Your leg'이에요.

라인[3]은 replace() 함수가 변경 후 문자열 'Your leg'이 적용된 'Your leg is too short' 문자열을 반환해 주었어요.

 

 

  ▶ join() 함수_문자열 삽입하기

문자열의 각각의 문자 사이에 어떤 문자나 문자열을 삽입해 주는 함수예요.

입력 값 : 문자열 또는 리스트나 튜플

출력 값 : 입력 값이 삽입된 문자열

1
2
3
4
5
>>> ','.join('abcd')
'a,b,c,d'
>>> ','.join(['a''b''c''d'])
'a,b,c,d'
>>>
cs

라인[1]은 join() 함수 시작 전에 ', '를 입력했어요. 그리고 함수 입력 값으로 'abcd' 문자열을 주었어요. 문자열의 각각의 문자 사이에 ',' 문자를 삽입해 달라는 의미예요.

라인[2]은 join() 함수가 문자열의 각각의 문자 사이에 ', ' 문자가 삽입된 문자열이 반환되었어요.

라인[3]은 join() 함수 입력 값으로 문자가 포함된 리스트를 주었어요. 리스트는 다음에 학습 예정이므로 여기선 대괄호[]를 사용하는 자료형이 있다고 알아두시면 돼요.

라인[4]은 리스트에 포함된 각각의 문자 요소들 사이에 ', ' 문자가 삽입된 문자열이 반환되었어요.

 

 

  ▶ split() 함수_문자열 나누기

문자열을 나누어 리스트에 하나씩 넣어 주는 함수예요.

입력 값 : 특정 문자 또는 안 넣어도 됨(안 넣으면 공백이 자동 입력됨)

1
2
3
4
5
6
7
>>> str1 = 'Life is too short'
>>> str1.split()
['Life''is''too''short']
>>> str2 = 'a-b-c-d'
>>> str2.split('-')
['a''b''c''d']
>>>
cs

라인[1] 은 'Life is too short' 문자열을 str1 변수에 대입했어요.

라인[2]은 split() 함수를 사용했어요. 입력 값으로 아무 값도 주지 않았기 때문에 자동으로 입력 값에 공백이 들어갔어요.

라인[3]은 split() 함수가 공백을 기준으로 문자열을 나누어 리스트 자료형으로 반환해 주었어요. 라인[4]은 'a-b-c-d' 문자열을 str2 변수에 대입했어요. 라인[5]은 split() 함수에 입력 값으로 문자 '-'를 주었어요. 라인[6]은 split() 함수가 문자 '-' 기준으로 문자열을 나누어 리스트 자료형으로 반환해 주었어요.

 

 

  ▶ len() 함수_문자열 길이 구하기

문자열의 길이를 구해주는 함수예요.

입력 값 : 문자열 또는 문자열이 대입된 변수

출력 값 : 문자열 길이

1
2
3
4
>>> str1 = "Let's try coding"
>>> len(str1)
16
>>>
cs

라인[1]은 "Let's try coding"이라는 문자열을 str1 변수에 대입했어요.

라인[2]은 len() 함수에 입력 값으로 라인[1]에서 대입한 문자열 변수를 주었어요. 여기선 문자열 다음에 '.'문자를 입력한 후 함수를 입력하지 않았어요. len() 함수는 엄연히 따지자면 문자열 내장 함수는 아니에요. 그래서 문자열변수. 함수명으로 함수를 호출하지 않은 거예요. len() 함수로는 문자열 길이뿐만 아니라 리스트, 튜플 등의 길이도 구할 수 있다는 점을 참고해 주세요.

라인[3]은 len() 함수가 str1에 대입된 문자열의 길이를 구해서 반환해 주었어요.

 

 

님들^^ 오늘도 정말 고생 많으셨어요. 오늘은 실습이 참 많아서 양손과 눈이 바쁘셨을 거예요. 기지개 한번 펴주시고, 오늘 배우신 내용은 자주 사용하는 문자열 관련 함수이므로 다시 한 번 실습해 보시길 추천드려요. 오늘도 열심히 학습하신 님들께 감사드리고 다음 시간에 또 뵐게요.

반응형