반응형
코딩테스트 문제를 풀면서 느낀건 문자열에 관한 메소드를 많이 알수록 확실히 더 쉽게 가거나 유리해질 수 있다.
이곳에 유용할 만한 문자열 메소드를 다 써보겠다.
<기본 메소드>
text = 'hello'
text.isalpha() # check if it consists of only alphabet.
text.isalum() # check if it consists of only alphabet or number.
text.isdigit() # check if it consists of only number.
text.islower() # check if it consists of only lower case.
text.isupper() # check if it consists of only upper case.
text.index('e') # return the index of char.
1
text.find('a') # it is same with .index() but it returns -1 if the char dosen't exist.
-1
# the order of alphabet.
text.min('abc')
a
text.max('abc')
c
# check if char is in string
't' in text
False
# count
text.count('l')
2
# join
>> w1='ab'
>> w2='cd'
>> w1.join(w2)
>> w1
'abcd'
>> w1='ab'
>> w2='cd'
>> w3 = ' '.join([w1,w2]) # list consists of only string
>> w3
'abcd'
<문자열 계산>
eval()은 연산부호가 섞인 문자열을 자동으로 계산하여 int/float형으로 리턴한다. 연산의 우선순위도 잘 지켜진다.
>>> a = '10+1/3'
>>> print(a)
10+1/3
>>> print(eval(a))
10.333333333333334
>>> print(type(eval(a))
<class 'float'>
<문자열 대체>
- replace(문자열 지정, 대체할 문자열)
사용 예시 : 반복되는 점을 하나로 줄이기
word = '...ab..c....d...e..f.'
while '..' in word:
word = word.replace('..','.')
print(word)
.ab.c.d.e.f.
- 반복되는 문자열 없애기
word = 'aabbbbcccddef'
answer = ''
for w in word:
if answer[-1:] != w:
answer += w
return answer
'abcdef'
<문자열 채우기>
rjust - > 문자열을 오른쪽으로 정렬 및 공백을 지정문자로 채워줌
ljust - > 문자열을 오른쪽으로 정렬 및 공백을 지정문자로 채워줌
zfill - > 문자열을 오른쪽으로 정렬 및 공백을 0으로 채워줌
a = 'abc'
a= a.rjust(10,"r")
print(a)
a = 'abc'
a= a.ljust(10,"r")
print(a)
a = 'abc'
a= a.zfill(10)
print(a)
rrrrrrrabc
abcrrrrrrr
0000000abc
<문자열 쪼개기>☆☆
# split() has two parameters. sep (default= ' ') and maxSplit(default is -1, it means no limit)
>>text = 'a b c d e'
>>text.split()
['a','b','c','d','e']
>>text.split(' ', 1)
['a','b c d e']
>>text.split(' ', 2)
['a','b', 'c d e']
< 전처리 메소드>☆☆☆
전처리 메소드 역시 요긴하게 사용될 수 있으므로 잘 알아두어야 한다.
# it needs 'import re'
# re.sub('pattern', 'replace func', 'string', number of change)
>>import re
>>a= 'hello my name is lee'
# replace 'hello' with 'hi'
>>re.sub('hello','hi',a)
'hi my name is lee'
# replace 'hello' and 'my' with 'hi'
>>re.sub('hello|my','hi',a)
'hi hi name is lee'
# All letter in list is replaced with 'hi'
# alert: comma is also can be replaced. Don't confused.
>>re.sub('[hello]','hi',a)
'hihihihihi my namhi is hihihi'
# [] 안에 [또는 ]를 쓰고 싶으면 앞에 \을 붙여주면 됨
new_id = re.sub('[~!@#$%^&*()=+\[{\]}:?,<>/]', '', new_id)
# re.sub('[0-9]' ... -> it changes all number.
# re.sub('[a-z]' ... -> it changes all lower cases.
# re.sub('[A-Z]' ... -> it changes all upper cases.
# re.sub('[^a-z]' ... -> it changes everything except for all lower cases.
# re.sub('[^a-zA-Z]' ... -> it changes everything except for all lower and upper cases.
댓글