문자열 함수(내장함수, 메쏘드(methods)),
문자열에 대해 왠만한건 모두 해볼수 있는것이, 문자열 함수입니다.
문자열 함수에 대해 둘로 구분한다면, 문자열 내장함수(built-in functions)와 문자열 메쏘드(methods)로 구분할 수 있습니다.
문자열 내장함수는 기본적인 함수처럼 "함수명(매개변수들)" 형식입니다.
그러나 메쏘드는 "문자열.함수명(매개변수들)" 형식으로, 함수를 적용할 문자열 옆에 .과 함수를 붙이는 형식입니다.
메쏘드는 나중에 배울 클래스와 객체를 배울때 더 자세히 설명하겠습니다.
미리 알고있던 것보다 문자열 내장함수와 메쏘드는 훨씬더 많았습니다.. ㅎㅎ;;
여러 블로그를 참조하고, 파이썬 3버전에 맞게 몇몇은 수정하며 문자열 함수를 정리해봤습니다.
(함수중에서 꽤 많이 사용되고, 대표적으로 소개되는 함수들은 진한 글씨로 표시했습니다. 참고하세요)
문자열 내장함수(built-in functions) :
문자열의 내장함수론 len(), max(), min()등이 있습니다.
len() 함수는 문자열의 길이를 숫자로 반환합니다.
ss = "가나다라마바사"
print(len(ss)) # 7 출력
문자열의 길이에선, 공백도 포함해서 계산하며, 한글이든 영문이든 칸 개수로 따집니다.
max() 함수는 문자열에서 최댓값을 가지는 문자or숫자를 반환합니다.
s1 = "abcd"
s2 = "1234"
s3 = "a1234567890"
print(max(s1), max(s2), max(s3)) # d 4 a 출력
문자는 알파벳순으로 마지막에 오는 문자(z,y,x...)를,
숫자는 당연히 가장 높은 숫자(9, 8, 7...)를 (한글자씩 쪼개서 계산하기에 십의자리, 백의자리 수는 없습니다.)
우선으로 해서, 인자값으로 받은 문자열중 최댓값을 뽑아서 반환합니다.
(문자와 숫자를 같이 했을땐, 0~9보다 a를 최댓값으로 반환하는걸 볼수 있습니다.)
min() 함수는 문자열에서 최솟값을 가지는 문자or숫자를 반환합니다.
s1 = "abcd"
s2 = "1234"
s3 = "abcxyz9"
print(min(s1), min(s2), min(s3)) # a 1 9 출력
문자는 알파벳순으로 처음에 오는 문자(z,y,x...)를,
숫자는 낮은 숫자(0, 1, 2...)를 우선으로 해서,
인자값으로 받은 문자열중 최솟값을 뽑아서 반환합니다.
(문자와 숫자를 같이 했을땐, abc~xyz보다 9를 최솟값으로 반환하는걸 볼수 있습니다.)
문자열 메쏘드(methods) :
횟수 카운트 함수
함수 | 설명 |
.count('~') | 문자열에서 ~가 들어간 횟수 반환 |
문자열안에 함수의 인자값(문자, 문자열)이 몇번 사용되는지 카운트해주는 함수입니다. 검색이랑 비슷하면서 다르게, 인덱스가 아닌 횟수를 반환합니다.
인덱스 검색 함수
find 함수 | index 함수 | 설명 | 비고 |
.find('~') | .index() | 문자열에서 ~가 있는 위치(인덱스)를 반환 (여러개있을시 맨첫번째) | 찾는 ~가 없을시 index : 에러, find : -1 을 반환 |
.find('~', n) | .index('~', n) | 문자열에서 ~가 있는 위치(인덱스)들중 n번째를 반환 | |
.rfind('~') | .rindex() | 문자열에서 ~가 있는 위치들 중 역으로(오른쪽부터) n번째를 반환 |
문자열에 인자값(문자, 문자열)이 어디있는지 인덱스를 반환하는 함수입니다.
find함수와 index함수 둘다 역할이 동일한데, 둘의 차이점으론 찾는 인자값이 문자열안에 없을때 index는 에러, find는 -1을 반환한다고 합니다.
첫, 끝부분 검사 함수
함수 | 설명 | 비고 |
.startswith('~') | 문자열이 ~로 시작하는 문자열인지 참또는 거짓 반환 |
두번째 매개변수: 검사 시작인덱스, 세번째 매개변수: 검사 종료인덱스 |
.endswith('~') | 문자열이 ~로 끝나는 문자열인지 참또는 거짓 반환 |
꽤 생소한 함수지만, 검색함수처럼 문자열에 인자값(문자, 문자열)이 있는지 확인하는데, 앞부분 or 끝부분에 있는지를 참 거짓으로 반환합니다.
둘다 매개변수를 두개, 세개로 원하면 추가할 수 있으며, 각각 의미하는 것은 검사할 시작인덱스와 끝인덱스 입니다.
변경, 제거 함수
함수 | 설명 | 매개변수 생략시 |
.replace('~', '..') | 문자열에서 모든 ~를 ..로 변경 | 에러남;; |
.expandtabs(숫자) | 탭(\t)을 인자값(숫자)만큼의 공백으로 변경 | 탭(\t)을 8자리 공백으로 변경 |
.rstrip('~') | 오른쪽 ~ 제거 | 오른쪽 공백 제거 |
.lstrip('~') | 왼쪽 ~ 제거 | 왼쪽 공백 제거 |
.strip('~') | 양쪽 끝의 ~ 제거 | 양쪽 끝의 공백 제거 |
여기서 strip()과 replace()는 문자열 안의 겹치는 모든 인자값을 지워주기에 편리한 함수인것 같습니다.
(특히 rstrip()을 input()으로 입력받을때 생긴 뒷부분공백을 지울때 유용합니다)
분리, 결합 함수
함수 | 설명 | 비고 |
.split('~') | 문자열을 ~기준으로 분리 (인자값 없으면 공백을 기준으로) | (문자열 1개 -> 문자열 여러개) |
.split('~', n) | 왼쪽에서부터 n번 만큼 ~기준으로 분리 | |
.rsplit('~', n) | 오른쪽에서부터 n번 만큼 ~기준으로 분리 | |
.splitlines() | 라인(\n) 단위로 분리 | |
'~'.join(strs) |
인자값(str, 리스트, 여러문자열)을 틈새에 ~을 넣어서 결합 |
(문자열 여러개 -> 문자열 1개) |
위 함수는 다음에 배울 리스트 자료형같이 여러 요소로 이루어진 요소를 문자열 하나로 만들거나, 혹은 그 반대로 만들수 있기에 무지막지한 활용도를 가지고 있습니다!
정렬 함수
함수 | 설명 | 비고 |
.center(n) | n글자만큼 가운데 정렬 | 두번째 매개변수 값을 넣어준다면 정렬후 생기는 공백을 인자값으로 채움. |
.ljust(n) | n글자만큼 왼쪽 정렬 | |
.rjust(n) | n글자만큼 오른쪽 정렬 | |
.zfill(n) | n글자만큼 오른쪽 정렬 후, 생기는 공백을 0으로 채움 |
just(정렬)과 관련된 함수로, 다음에 배울 문자열 포맷에서도 정렬할 수 있지만, 문자열 내장함수상에서도 원하는 정렬을 할수 있습니다. (정렬후 빈 공간은 기본적으로 (화이트스페이스)공백으로 채웁니다)
대소문자 변환 함수
함수 | 설명 |
.upper() | 문자열을 대문자로 변환 |
.lower() | 문자열을 소문자로 변환 |
.swapcase() | 문자열을 대소문자 반전 |
.capitalize() | 문자열의 첫문자를 대문자로 변환 |
.title() | 단어들의 첫문자를 대문자로 변환 |
보다시피 알파벳의 대소문자의 변환을 처리합니다. .upper(), .lower()는 그중 대표적으로 소개되곤 합니다.
구성요소 판별 함수
함수 | 설명 |
.isdigit() | 문자열에 숫자 있는지 참 또는 거짓 반환 |
.isalpha() | 문자열에 영문자 있는지 참 또는 거짓 반환 |
.isalnum() | 문자열에 숫자 + 영문자 있는지 참 또는 거짓 반환 |
.islower() | 문자열에 소문자 있는지 참 또는 거짓 반환 |
.isupper() | 문자열에 대문자 있는지 참 또는 거짓 반환 |
.isspace() | 문자열에 공백(화이트 스페이스) 있는지 참 또는 거짓 반환 |
.istitle() | 단어 첫글자마다 대문자인지 참 또는 거짓 반환 |
문자열이 어떤 요소로 되어있는가를 검출해서 참, 거짓(bool자료형형식)으로 반환하는 함수들 입니다. 대소문자 변환함수와 비슷한 이름의 함수도 있습니다. 이렇게 구성요소를 판별하는 함수를 사용할 수도 있고, 다른방법도 존재합니다.
string 모듈
import string 을 코드의 맨 위에 추가한다면 사용가능합니다.
(import, 모듈은 다음에 배우지만, 간단하게 이미 구현되있는 요소들을 불러오는 것입니다)
각각 비슷한 특징을 가진 요소들로 모여있으며, 맴버연산자(in, not in) 를 사용해서 특정 그룹(영문자, 숫자 등등)에 검출하고 싶은 요소가 속하는지 검출할 수 있습니다.)
import string # string 모듈을 파이썬 코드로 가져와주는 코드 1줄
string.digits # == '0123456789' (0~9, 10진수 숫자)
string.octdigits # == '01234567' (0~7, 8진수 숫자)
string.hexdigits # == '0123456789abcdefABCDEF' (0~F, 16진수 숫자)
string.letters # == 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' (영문자)
string.lowercase # == 'abcdefghijklmnopqrstuvwxyz' (소문자)
string.uppercase # == 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' (대문자)
string.puctuation # == '!"#$%…' (특수문자)
string.printable # (인쇄 가능한 문자 모두)
string.whitespace # (공백 문자 모두, 8진수 형식임)
(ex} ch in string.digits : ch가 숫자면 참, 아니면 거짓 반환)
도움받은 출처 :
'파이썬(Python) > 문법' 카테고리의 다른 글
자료형 - 3-5. 문자열 포맷팅 심화, 형식 지정자 (1) | 2020.03.11 |
---|---|
자료형 - 3-4. 문자열 포맷팅 (0) | 2020.03.10 |
자료형 - 3-2. 인덱싱과 슬라이싱 (0) | 2020.02.22 |
자료형 - 3-1. 문자열자료형 str (0) | 2020.02.22 |
파이썬의 기본연산자 (2) | 2020.02.20 |