파이썬 문자열 메소드 사용법 정리 (split, join, find, count, isalpha, isdigit 등)

파이썬 기본 문법 중 문자열 처리를 위한 메소드에 대해 알아본다. 기본적인 문법 규칙은, 문자열 뒤에 .메소드() 형태로 붙여서 사용한다.

🔺 구글코랩 파이썬에서 이렇게 문자열 (str)로 된 어떤 변수를 선언하고, 변수명 . 까지 누르면 자동완성으로 뒤에 붙일 수 있는 메소드들이 쭉 출력된다.

s="python"
s

python

🔺 먼저 이렇게 s라는 변수에 python 이라는 문자열을 대입하여 str 자료형태로 선언하고, 파이썬에서 문자열 자료형태를 처리할 때 쓰는 메소드들을 아래에 하나씩 실습해보았다.

대소문자 판단과 치환 메소드

upper

# 대문자로 변경

a="python"
s.upper()
PYTHON

🔺 여기에 upper 메소드를 뒤에 붙이면 대문자로 변경된다. 만약 문자열이 대문자였다면 lower를 붙이면 소문자로 변환된다.

lower

# 소문자로 변경

a="PYTHON"
a.lower()
python

🔺 lower를 붙이면 대문자가 있을 경우소문자로 변환된다.

a="PYTHON"

print(a.lower())
print(a)


python
PYTHON

🔺 메소드를 사용했다고 원래의 변수 내용이 바뀌는 것은 아니다. 위 예시에서 메소드로 소문자로 바꾼결과를 출력하고, 다시 원래 변수를 출력하면 그대로 나오는 것을 알 수 있다.

islower, isupper

# 소문자로만 되어 있는지 

s = "python"
s.islower()

True


# 대문자로만 되어 있는지 

s = "python"
s.isupper()

False

🔺 치환해주지 않고 문자열이 대문자로만 되어 있는지 소문자로만 되어있는지 판단해서 참거짓 True / False를 반환한다.

capitalize

# 첫글자만 대문자, 나머진 소문자로

s = "pythOn"
s.capitalize()

Python

🔺 capitalize 를 사용하면 첫 글자만 대문자로 만들고 나머진 다 소문자로 할 수 있다.

swapcase

# 대문자 소문자 서로 변환

s = "pythOn"
s.swapcase()

PYTHoN

🔺 swapcase는 대문자와 소문자를 각각 서로 바꿔준다.

글자 검색 메소드

startswith, endswith

# 시작 글자 판별

s.startswith('p')
True

s.startswith('o')
False

# 끝 글자 판별

s.endswith('n')
True

s.endswith('y')
False

🔺 startswith() , endswith() 메소드는 시작과 끝의 글자를 판별해준다. 괄호안에 있는것과 일치하면 True, 불일치하면 False를 반환한다.

find

# 글자가 포함된 첫번째 위치 찾기

s.find('th')
2

# 없으면 -1 반환

s.find('xy')
-1

🔺 find는 객체 내에서 특정 글자가 들어있는 시작위치를 찾아주는 메소드이다. 있다면 그 위치의 index 번호를 반환해주고 없다면 -1로 보낸다.

index

# 인덱스 찾기

s = "python"
s.index("o")

4

🔺 비슷한 메소드로 index가 있다. 다만 find와의 차이점은 find는 값이 없으면 -1을 주지만 index는 값이 포함되어 있지 않을 경우 ValueError를 발생한다.

rfind, rindex

# 뒤에서부터 찾기

s = "pythonpythonpythonpython"

s.rfind("th")
20

🔺 rfind는 반대로 뒤에서 부터 검색해서 가장 먼저 잡히는 위치의 index를 알려준다. 긴 문장에서 반복되는 단어가 많이 있을 경우 가장 끝에 나오는 것을 찾아주는 것이다. index도 마찬가지로 rindex로 하면 뒤에서부터 찾아주게 된다.

count

# 글자 포함 횟수

s.count('p')
1

🔺 count는 문자열에 특정 글자가 포함된 횟수를 알려준다.

isalpha, isdigit

# 알파벳으로만 구성되어 있는가

s="python"

s.isalpha()
True

s.isdigit()
False

# 숫자로만 구성되어 있는가

a="54234235"

s.isalpha()
False

s.isdigit()
True

🔺 isalpha와 isdigit은 문자열 변수가 알파벳으로만 이루어져 있는지, 숫자로만 이루어져 있는지 판별해 준다. 이것은 나중에 어떠한 입력값을 받아 명령을 수행할 때 그 입력이 올바른지 체크해주는 경우 필요한 메소드이다.

여기서 중요한 것은 변수 자료형태가 문자열인 경우에 사용한다는 점이다.

정수형 변수에 isdigit 메소드 사용시 에러화면

🔺 이렇게 정수형 변수에 대해 isdigit 메소드를 사용하면 에러가 발생한다. isdigit과 기능이 똑같은 isnumeric 이라는 메소드를 사용하여도 동일하다.

isalnum

# 문자와 숫자로만 이루어져 있는지

s = "python"
s.isalnum()
True

s = "python123"
s.isalnum()
True

s = "python123!@#"
s.isalnum()
False

s = "python 123"
s.isalnum()
False

🔺 isalnum을 이용하여 문자와 숫자를 같이 판별할 수도 있다. 특수문자가 없는지 판단하는데 사용하면 된다. 이 때 공백이 껴있어도 False가 뜨는 것을 알 수 있다.

문자열 편집 메소드

replace

# 특정 글자 치환

"cat on the mat".replace('at', 'om')
com on the mom

🔺 replace로 특정 부분을 치환할 수 있다.

split

# 나누기

"010-1234-5678".split('-')
['010', '1234', '5678']

🔺 split 기호로 나눈 문자열은 각각을 원소로 하는 리스트로 주어진다. 엑셀에서 <구분 기호로 분리>랑 비슷하다.

join

# 합치기

'-'.join(['010', '1234', '5678'])
010-1234-5678

🔺 join은 특정 기호를 기준으로 문자열을 합치는 기능이다. 

strip

# 공백제거

"     hello world     ".strip()
hello world

🔺 strip은 좌우, 시작과 끝부분에 있는 공백을 일괄적으로 제거해 준다. 가끔 엑셀 작업할 때 띄어쓰기 포함된 데이터들때문에 수식이 안먹는 경우가 있어서 바꾸기로 공백을 삭제해주곤 했는데, 그것과 비슷한 기능이다.