파이썬 기본 문법 중 문자열 처리를 위한 메소드에 대해 알아본다. 기본적인 문법 규칙은, 문자열 뒤에 .메소드() 형태로 붙여서 사용한다.
🔺 구글코랩 파이썬에서 이렇게 문자열 (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과 기능이 똑같은 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은 좌우, 시작과 끝부분에 있는 공백을 일괄적으로 제거해 준다. 가끔 엑셀 작업할 때 띄어쓰기 포함된 데이터들때문에 수식이 안먹는 경우가 있어서 바꾸기로 공백을 삭제해주곤 했는데, 그것과 비슷한 기능이다.