안녕하세요 여몽의 눈동자입니다.
이번 포스팅에서는 스트링 메서드에 대해 정리해보겠습니다. 역시 dir() 함수를 통해 스트링 데이터 타잎에 연계된 메서드 들을 확인 할 수 있습니다.
1. 스트링 메서드 (String Methods)
우선, 편리하게 대소문자를 변환할 수 있습니다.
메서드 | 설명 |
upper() | 스트링의 문자를 모두 대문자로 바꿉니다. |
lower() | 스트링의 문자를 모두 소문자로 바꿉니다. |
title() | 스트링 각 단어의 첫글자만 대문자로 나머지는 소문자로 전환합니다. |
swapcase() | 스트링의 대문자는 소문자로 소문자는 대문자로 전환합니다. |
In [1]: string = "hello world"
In [2]: string.upper()
Out[2]: 'HELLO WORLD'
In [3]: string.lower()
Out[3]: 'hello world'
In [4]: test1 = 'heLLo wOrld'
In [5]: test1.title()
Out[5]: 'Hello World'
In [7]: test1.swapcase()
Out[7]: 'HEllO WoRLD'
또는 스트링 내의 문자가 대문자인지 소문자인지 판단할 수도 있습니다.
메서드 | 설명 |
isupper() | 스트링이 모두 대문자인경우 True를 그렇지 않은 경우 False를 반환합니다. |
islower() | 스트링이 모두 소문자인경우 True를 그렇지 않은 경우 False를 반환합니다. |
In [4]: temp = "Hello world"
In [5]: temp.isupper()
Out[5]: False
In [6]: temp.islower()
Out[6]: False
In [7]: temp.upper().isupper()
Out[7]: True
위의 예 에서는 upper()가 스트링을 반환하기 때문에 이에 대해 다시 스트링 메서드인 isupper()가 적용가능합니다.
그 외에도 스트링 특성에 따라 논리적 참(True)/거짓(False) 을 반환하는 여러 유용한 메서드 들이 있습니다. 이러한 메서드 들은 특히 프로그램 사용자의 입력값의 유효성을 판별할 때 유용합니다.
메서드 | 설명 |
isalpha() | 스트링이 모두 문자만을 포함하고 공백이 없다면 True를 그 외의 경우에는 False 반환합니다. |
isalnum() | 스트링이 모두 문자 또는 숫자만을 포함하고 공백이 없다면 True를 그 외의 경우에는 False 반환합니다. |
isdecimal() | 스트링이 모두 숫자로 되어있고 공백이 없다면 True를 그 외의 경우에는 False를 반환합니다. |
isspace() | 스트링이 공백, 탭 등 white space 만 있는 경우 참 그 외의 경우에는 False를 반환합니다. |
istitle() | 스트링내 각 단어에서 첫글자만 대문자이고 나머지는 소문자인 경우 True를 그 외의 경우에는 False를 반환합니다. |
In [8]: test1 = "brown"
In [9]: test1.isalpha()
Out[9]: True
In [13]: test2 = "brown2"
In [14]: test2.isalpha()
Out[14]: False
In [15]: test1 = "Red1"
In [16]: test1.isalnum()
Out[16]: True
마지막에 공백을 추가하면 결과가 False로 바뀝니다.
In [17]: test1 += " "
In [18]: test1.isalnum()
Out[18]: False
연결하고 싶은 문자열 들을 특정 문자열을 연결자로 삼아 연결 (concatenate) 하거나 반대로 분리 할 수 있습니다.
메서드 | 설명 |
join() | 주어진 문자열들을 메서드 앞의 문자열을 연결자로 삼아 연결합니다. |
split() | 반대로, 주어진 구분자를 이용하여 (기본값은 공백) 문자열을 나눕니다. |
In [24]: test1 = ', '.join(['cats', 'dogs', 'horses'])
In [25]: test1
Out[25]: 'cats, dogs, horses'
In [28]: test2 = ' '.join(['My', 'name', 'is', 'Anisha', 'Nyatee'])
In [29]: test2
Out[29]: 'My name is Anisha Nyatee'
In [30]: test1.split()
Out[30]: ['cats,', 'dogs,', 'horses']
In [31]: test1.split(',')
Out[31]: ['cats', ' dogs', ' horses']
In [32]: test2.split('n')
Out[32]: ['My ', 'ame is A', 'isha Nyatee']
In [33]: test2.split()
Out[33]: ['My', 'name', 'is', 'Anisha', 'Nyatee']
스트링이 특정문자열로 시작하는지 혹은 끝나는지 판별할 수도 있습니다.
메서드 | 설명 |
startswith() | 스트링이 특정문자열로 시작하는 경우 True 아니면 False를 반환합니다. |
endswith() | 스트링이 특정문자열로 끝나는 경우 True 아니면 False를 반환합니다. |
In [19]: test3 = "Jane went to the school."
In [20]: test3.startswith('Jane')
Out[20]: True
In [21]: test3.startswith('Tom')
Out[21]: False
In [22]: test3.endswith('.')
Out[22]: True
문자열을 오른쪽, 왼쪽, 가운데로 정렬할 수 있으며 정렬 후 생긴 공백에는 다른 문자를 채울 수 있습니다.
메서드 | 설명 |
rjust() | 스트링을 우측으로 정렬합니다. |
ljust() | 스트링을 좌측으로 정렬합니다. |
center() | 스트링을 가운데로 정렬합니다. |
In [34]: 'Hello'.rjust(10)
Out[34]: ' Hello'
In [35]: 'Hello'.rjust(20)
Out[35]: ' Hello'
In [36]: 'Hello'.ljust(20)
Out[36]: 'Hello '
In [37]: 'Hello'.rjust(20, '.')
Out[37]: '...............Hello'
In [38]: 'Hello'.ljust(20, '.')
Out[38]: 'Hello...............'
In [39]: 'Hello'.center(20, '-')
Out[39]: '-------Hello--------'
때로는 문자열의 앞이나 뒤에 불필요하게 공백이 붙어있을 수 있습니다. 이러한 불필요한 공백(trailing or leading whitespace) 을 제거할 수도 있습니다. 또는 공백 이외의 특정한 문자를 지정해서 제거할 수도 있습니다.
메서드 | 설명 |
strip() | 스트링 양측의 불필요한 공백을 제거합니다. |
lstrip() | 스트링 왼쪽의 불필요한 공백을 제거합니다. |
rstrip() | 스트링 오른쪽의 불필요한 공백을 제거합니다. |
In [40]: test1 = ' Brown '
In [41]: test1.lstrip()
Out[41]: 'Brown '
In [42]: test1.rstrip()
Out[42]: ' Brown'
In [43]: test1.strip()
Out[43]: 'Brown'
아래와 같이 특정 문자열을 지정하면 해당 문자열을 제거합니다.
In [45]: test2 = '-----Hello-----'
In [46]: test2.strip('-')
Out[46]: 'Hello'
In [47]: test2.lstrip('-')
Out[47]: 'Hello-----'
전체문자열에서 지정한 문자열이 몇번 나왔는지 어느 위치에 나왔는지 알아볼 수 있습니다.
메서드 | 설명 |
count() | 지정된 문자열이 스트링에서 몇번 나왔는지 알려줍니다. |
find() | 지정된 문자열이 스트링에서 처음나오는 위치의 인덱스 번호를 반환합니다. 만약 스트링내에 없는 경우 -1을 반환합니다. |
replace() | 지정된 문자열을 새 문자열로 교체합니다. |
In [50]: test1 = 'Jessica is a beautiful girl'
In [51]: test1.count('n')
Out[51]: 0
In [52]: test1.count('e')
Out[52]: 2
In [53]: test1.find('e')
Out[53]: 1
In [54]: test1.find('beautiful')
Out[54]: 13
In [55]: test1.find('pretty')
Out[55]: -1
In [56]: test1.replace('s','m')
Out[56]: 'Jemmica im a beautiful girl'
텍스트 교체를 최대 몇 번 할지도 지정 할 수 있습니다.
In [57]: test1.replace('s','m',1)
Out[57]: 'Jemsica is a beautiful girl'
댓글
댓글 쓰기