문자열도 문자 여러 개가 연속적으로 이어져 있는 시퀀스 자료형이기때문에 리스트와 비슷한 점이 많다.
문자열 메서드 사용 방법과 문자열 포메팅
- replace('바꿀문자열', '새문자열')
문자열 안의 문자열을 다른 문자열로 바꾼다.(문자열 자체는 변경하지 않으며 바뀐 결과를 반환한다)
>>> 'Hello, Jeju!'.replace('Jeju', 'Seoul')
'Hello, Seoul!'
바뀐 결과를 유지하고 싶으면 문자열이 저장된 변수에 replace를 사용한 뒤 다시 변수에 할당해주면 된다.
>>> c = 'Hello, Jeju!'
>>> c
'Hello, Jeju!'
>>> c = c.replace('Jeju', 'Seoul')
>>> c
'Hello, Seoul!'
- str.maketrans('바꿀문자', '새문자')
- translate(테이블)
문자열 'python'에서 p를 1, o를 2, w를 3, e를 4, r를 5로 바꾼다.
>>> table = str.maketrans('power', '12345')
>>> 'python'.translate(table)
'1yth2n'
- split()은 공백을 기준으로 문자열을 분리하여 리스트를 만든다. input으로 문자열을 입력받은 뒤에 리스트로 만든 메서드가 이 split이다.
>>> 'python java php swift javascript'.split()
['python', 'java', 'php', 'swift', 'javascript']
split('기준문자열')과 같이 기준 문자열을 지정하면 기준 문자열로 문자열을 분리한다. 즉, 문자열에서 각 단어가, (콤마)와 공백으로 구분되어 있을 때 ', '으로 문자열을 분리하면 단어만 리스트로 만든다.
>>> 'python, java, php, swift, javascript'.split(', ')
['python', 'java', 'php', 'swift', 'javascript']
문자열을 분리해서 리스트로 만들 수 있듯이 다시 연결하는 방법도 있다.
- join(리스트)는 구분자 문자열과 문자열 리스트의 요소를 연결하여 문자열로 만든다.
>>> ' '.join(['python', 'java', 'php', 'swift'])
'python java php swift
>>> '_'.join(['python', 'java', 'php', 'swift'])
'python_java_php_swift'
- upper()
>>> 'python is awesome'.upper()
'PYTHON IS AWESOME'
- lower()
>>> 'PYTHON IS ASWESOME'.lower()
'python is aswesome'
- lstrip()
>>> ' jeju '.lstrip()
'jeju '
- rstrip()
>>> ' jeju '.rstrip()
' jeju'
strip()
>>> ' jeju '.strip()
'jeju'
- lstrip('삭제할문자들')
>>> '... jeju,'.lstrip('.,')
' jeju,'
- rstrip('삭제할 문자들')
>>>
'... jeju,'.rstrip('.,')
'... jeju'
- strip('삭제할 문자들')
>>> '... jeju,'.strip('.,')
' jeju'
>>> import string
>>> '... jeju,'.strip(string.punctuation)
' jeju'
>>> '... jeju,'.strip(string.punctuation + ' ')
'jeju'
>>> '... jeju,'.strip(string.punctuation).strip()
'jeju'
- ljust(길이)는 문자열을 지정된 길이로 만든 뒤 왼쪽으로 정렬하며 남는 공간을 공백으로 채운다.
>>> 'jeju'.ljust(10)
'jeju ' # jeju 길이 4 차지, 공백 6칸, 총 길이 10
- rjust(길이)
>>> 'jeju'.rjust(10)
' jeju'
- center(길이)
>>> 'jeju'.center(10)
' jeju ' # 좌우 공백 3칸씩, jeju 길이 4 차지.
>>> 'jeju'.center(11) # 길이 11, 홀수면
' jeju ' # 왼쪽에 공백이 1칸 더 들어간다.
메서드 체이닝: 메서드를 계속 연결해서 호출한다.
>>> 'jeju'.ljust(10).upper()
'JEJU '
파이썬을 사용하다 보면 문자열 왼쪽에 0을 채워야 할 경우가 생긴다.
- zfill(길이)는 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채운다. (zero fill을 의미한다). 단, 문자열의 길이보다 지정된 길이가 작다면 아무것도 채우지 안흔다. 보통 zfill은 숫자를 자릿수로 맞추고 앞자리는 0으로 채울 때 사용한다.
>>> '11'.zfill(4)
'0011'
>>> '2.5'.zfill(6)
'0002.5'
>>> 'jeju'.zfill(8)
'0000jeju'
find('찾을문자열')은 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환한다. find는 왼쪽에서부터 문자열을 찾는데, 같은 무자열이 여러 개일 경우 처음 찾은 문자열의 인ㄷ게스를 반환한다.
>>> 'jeju jejuisland'.find('ju')
2
>>> 'jeju jejuisland'.find('ab')
-1
rfind('찾을문자열')
>>> 'jeju jejuisland'.rfind('ju')
7
>>> 'jeju jejuisland'.rfind('ab')
-1
index('찾을문자열')은 왼쪽에서부터 특정 문자열을 인덱스를 반환한다. 단,
문자열이 없으면 에러를 발생시킨다.
>>> 'jeju jejuisland'.index('ju')
2
rindex('찾을문자열')
>>> 'jeju jejuisland'.rindex('ju')
7
count('문자열')
>>> 'jeju jejuisland'.count('ju')
2