Welcome to the Matrix

017. 파이썬 문자열 처리를 위한 다양한 문자열 함수 본문

Python/PythonBasic

017. 파이썬 문자열 처리를 위한 다양한 문자열 함수

haru.keiko 2021. 1. 4. 23:37

이번에는 파이썬 문자열 처리를 위한 다양한 '문자열 함수'에 대해서 알아보겠습니다. 

파이썬 문자열 함수 썸네일

앞서 우리는 파이썬에서 문자열이 무엇인지, 문자열을 사용해서 어떤 연산을 할 수 있는지, 그리고 문자열을 이용한 간단한 파이썬 프로그램을 작성해 봤습니다.

 

007. 파이썬 문자열 자료형

파이썬이 제공하는 기본 자료형 중 '문자열 자료형'에 대해서 알아보겠습니다. 문자열 파이썬에서 '문자열'이라는 것은 작은따옴표나 큰 따옴표로 둘러싸인 모든 것을 의미합니다. 문자 또는 단

null-0.tistory.com

 

 

008. 파이썬 문자열 연산자로 문자열 다루기

이번에는 '파이썬 문자열 연산자'를 이용해 문자열을 다루는 방법에 대해 알아보겠습니다. 앞선 포스트에서 숫자형 자료형에 대해서 다룬 바 있는데요, 숫자형 자료형은 '산술 연산자', '나누기

null-0.tistory.com

 

016. 문자열 자료형을 이용한 간단한 파이썬 프로그램 - 주민등록번호 앞 6자리로 생년, 월, 일 정

지난 시간에는 '숫자 자료형'을 이용해 '섭씨 화씨 변환 프로그램'을 만들어 봤습니다. 015. 숫자 자료형을 이용한 간단한 파이썬 프로그램 예제 - 섭씨 화씨 변환 프로그램 지금까지 우리는 숫자

null-0.tistory.com

 

 

문자열에 사용되는 함수들

파이썬에서 문자열은 하나의 '객체'입니다.

문자열뿐 아니라 파이썬의 모든 것은 객체입니다.

그리고 그 객체를 '데이터''행위'라는 요소로 이루어졌습니다.

 

이 중, 데이터에 해당하는 것이 우리가 알고 있는 기본 자료형(숫자, 문자열, 불)을 포함한 앞으로 알게 될 수많은 자료형들입니다. 그리고 행위에 해당하는 것이 함수, 또는 메서드라고 불리는 것들입니다.

문자열이란 자료형은 자체적으로 사용할 수 있는 함수를 가지고 있는 것입니다. 이를 문자열 함수라고 하고, 기본적으로 '문자열'이란 객체에 포함되어 잇기 때문에 바로 사용할 수 있습니다.

단, 문자열 함수를 사용하기 위해서는 문자열, 또는 문자열 변수 이름 뒤에 '닷 연산자(.)'를 붙인 다음 함수 이름을 써서 사용합니다.

 

문자열을 활용하기 위한 함수는 아주 다양합니다. 우리는 그 함수를 이용해서 문자열 처리를 더 편하고 효과적으로 할 수 있습니다. 

 

문자열 길이 구하기(len)

파이썬에서 문자열의 길이를 구하기 위해 사용하는 함수는 'len()' 함수입니다. 

len() 함수는 문자열에 포함되지 않는 함수지만, 파이썬에 기본적으로 내장된 함수이므로 별다른 설정 없이 바로 사용할 수 있는 함수입니다. 

사용법은 무척 간단합니다. 아래와 같이 사용할 수 있습니다. 

len('Hello, world')
a = 'Hello, world')
len(a)

문자열 길이를 구하는 함수 len

len() 함수의 괄호 안에 길이를 알고 싶은 문자열 변수나 문자열을 입력하면 그 문자열의 길이를 알려줍니다.

 

문자열 내의 문자 개수 세기(count)

count() 함수는 파이썬 문자열 내에 찾는 문자의 개수가 몇 개 있는지 알려주는 함수입니다. 

다음과 같이 count() 함수를 사용할 수 있습니다.

a = 'Hello, world'
a.count('e')
a.count('l')
'Hello, world'.count('l')

문자열 내의 문자 개수 세는 함수 count

위 예는 'Hello, world'라는 문자열에 'e'의 개수, 그리고 'l'의 개수를 세어본 예입니다.

 

문자열 찾기(find, rfind)

파이썬에서 특정 문자(또는 문자열)가 문자열 내부 어디에 위치하는지 확인할 수 있습니다. 이때 사용하는 문자열 함수는 'find()' 함수와 'rfind()' 함수입니다. 

  • find() : 왼쪽에서 오른쪽으로 검사하며, 특정 문자(문자열)가 처음 등장하는 위치를 찾습니다.
  • rfind() : 오른쪽에서 왼쪽으로 검사하며, 특정 문자(문자열)가 처음 등장하는 위치를 찾습니다. 

find()와 rfind()는 하는 일은 같지만, 특정 문자(또는 문자열)를 찾는 방향이 반대입니다.

a = 'Hello, world'
a.find('l')
a.rfind('l')
a.find('lo')
a.find('x')

문자열 내에서 일치하는 문자나 문자열을 찾는 find, rfind 함수

문자열 'Hello, world'에 대해 find() 함수로 'l'을 검색했을 때, 그 첫 번째 위치는 2입니다. 

그리고, rfind() 함수로 'l'을 검색했을 때, 그 첫 번째 위치는 10입니다. 

문자뿐 아니라 문자열('lo')도 검색을 할 수 있고, 발견되는 첫 번째 위치는 3입니다. 

마지막으로, 만약 찾는 문자 또는 문자열이 없을 경우, 결과로 -1을 돌려줍니다.

파이썬의 문자열은 그 위치(index)를 0부터 세기 때문에 'Hello, world'의 첫 번째 'l'의 위치는 2입니다. 

 

문자열 찾기(index)

파이썬 문자열에서 특정 문자(또는 문자열)의 위치를 찾는 다른 방법은 index() 함수를 이용하는 방법입니다. index() 함수는 find() 함수와 동일하게 동작합니다.

index() 함수가 find() 함수와 다른점이 있다면, 문자열 내에 없는 문자(문자열)를 찾으려고 하면 -1이 아닌 오류를 발생시킵니다. 

a = 'Hello, world'
a.index('l')
a.index('lo')
a.index('x')

문자열 내에서 일치하는 문자나 문자열을 찾는 index 함수

위 예제 코드를 보면, index() 함수를 사용해 'Hello, world' 문자열 내에 존재하지 않는 'x'를 찾으려고 시도하면 오류를 발생시키는 것을 볼 수 있습니다.

 

문자열 대/소문자 바꾸기(upper, lower, title)

파이썬에서 문자열 함수 upper() 함수는 문자열 내 알파벳을 대문자로 바꿔줍니다. 또, lower() 함수는 문자열 내의 알파벳을 소문자로 바꿔줍니다. 마지막으로 title() 함수는 문자열 내 각 단어의 첫 번째 알파벳만 대문자로 표기하고 나머지는 소문자로 바꿔줍니다.

a = 'HELlo, world~!!'
a.upper()
a.lower()
a.title()

문자열 내 대/소문자로 바꾸는 upper, lower 함수

예를 들기 위해 문자열 'HELlo, world~!!'라는 문자열을 변수 a에 할당했습니다. 

upper() 함수의 경우, 모든 알파벳 문자를 대문자로 변경한 것을 볼 수 있습니다. 

lower() 함수는 모든 알파벳 문자를 소문자로 변경한 것을 볼 수 있습니다. 

그리고, title() 함수는 각 단어의 첫 알파벳 문자만 대문자로 나머지는 소문자로 변경한 것을 볼 수 있습니다. 

 

문자열 나누기(split)

파이썬에서 문자열을 특정한 문자를 기준으로 나눌 수 있습니다. 이때 사용하는 함수가 split() 함수입니다.

문자열을 나누는 기준이 되는 문자를 split() 함수의 괄호 안에 넣어서 문자열을 나눌 수 있습니다. 괄호 안에 아무것도 넣

지 않으면 문자열을 공백(' ')으로 나누게 됩니다. 

a = 'Life is too short'
a.split()
a = '10, 20, 30, 40, 50'
a.split(', ')

문자열을 나누는 함수 split 함수

'Life is too short'라는 문자열을 공백을 기준으로 나누기 위해 split() 함수를 사용했습니다. 그리고 '10, 20, 30, 40, 50'이라는 문자열을 ', '을 기준으로 나누기 위해 split(', ')를 사용했습니다. 

split() 함수를 이용해서 특정 문자를 기준으로 나눈 문자열은 '리스트'라는 자료구조에 저장됩니다. 

리스트는 조만간 살펴볼텐데요, 일단 문자열을 split() 함수를 이용해서 나눌 수 있다는 점을 기억하면 됩니다. 

 

문자열 합치기(join)

join() 함수는 괄호 안의 문자열 사이에 특정 문자(문자열)를 삽입하여 새로운 문자열을 만드는 함수입니다. 

먼저 다음 예를 살펴보겠습니다. 

a = 'Hello, world'
a.replace('world', 'Jane')

문자열을 합치는 join 함수

먼저 첫 번째, 두 번째 예를 보면, 문자열 합치기라기 보다는 문자열 연결하기로 보입니다. 

join() 함수의 괄호 안의 문자열을 각각 '-'와 ' '로 연결한 문자열이 결과로 반환됩니다. 

하지만, 세 번째 예를 보면 확실히 문자열을 연결한다고 볼 수 있습니다. 4 개의 문자열을 가진 리스트를 공백(' ') 문자로 join() 함수를 이용해 연결했습니다. 

 

split() 함수와 join() 함수는 반대되는 개념의 기능을 하는 함수라고 볼 수 있습니다. 

 

문자열 공백 제거(strip, lstrip, rstrip)

strip() 함수는 문자열의 양 끝에 존재하는 공백을 제거하는 함수입니다. 

파이썬뿐 아니라 많은 프로그래밍 언어에서 문자열을 처리하기 전에 문자열의 양 끝에 붙은 불필요한 공백을 제거하기 위해 strip() 함수를 사용합니다. 여기서 공백이란 띄어쓰기, 탭, 줄 바꿈 문자 등을 모두 포함합니다. 

strip() 함수는 아래 보는 것처럼 세 종류가 있습니다.  

  • strip() : 문자열 앙 옆의 공백을 제거합니다. 
  • lstrip() : 문자열 왼쪽의 공백을 제거합니다.
  • rstrip() : 문자열 오른쪽의 공백을 제거합니다.

다음 예를 살펴보겠습니다. 

a = 'Hello, world'
'-'.join(a)
' '.join(a)
b = ['Life', 'is', 'too', 'short']
' '.join(b)

문자열 공백을 제거하는 strip, lstrip, rstrip 함수

문자열을 저장한 변수 a를 보면, 문자열의 양 끝에 탭 문자와 공백이 존재하는 것을 확인할 수 있습니다. 

strip(), lstrip(), rstrip()을 이용해서 문자열 양 끝의 불필요한 공백을 제거한 것을 볼 수 있습니다. 

주로 strip() 함수를 사용하고, lstrip(), rstrip() 함수는 잘 사용되지 않습니다만, 알고 있으면 언젠가 도움이 되는 날이 있을 것입니다. 

 

문자열 바꾸기(replace)

문자열의 특정 문자(문자열)를 다른 문자(문자열)로 교체하고 싶을 경우 사용하는 함수가 replace() 함수입니다. 

다음 예를 살펴보는 것이 직관적으로 알 수 있을 것 같습니다.

a = 'Hello, world'
a.replace('world', 'Jane')

문자열 내 특정 문자 또는 문자열을 바꾸는 replace 함수

 

이상 파이썬의 문자열 처리에 사용되는 문자열 함수 중 많이 사용하는 함수를 위주로 알아보았습니다.