22.3 문자열 조작하기

문자열은 문자열을 조작하거나 정보를 얻는 다양한 메서드를 제공합니다. 파이썬에서 제공하는 문자열 메서드는 여러 가지가 있는데 여기서는 자주 쓰는 메서드를 설명하겠습니다.

replace(바꿀문자열, 새문자열)은 문자열 안의 문자열을 다른 문자열로 바꿉니다. 다음은 'Hello, world!''world''Python'으로 바꿉니다.

>>> s = 'Hello, world!'
>>> s.replace('world', 'Python')
'Hello, Python!

split()은 공백을 기준으로 문자열을 분리하여 리스트로 만듭니다. split(기준문자열)과 같이 기준 문자열을 지정하면 기준 문자열로 문자열을 분리합니다.

>>> s = 'apple pear grape pineapple orange'
>>> s.split()
['apple', 'pear', 'grape', 'pineapple', 'orange']
>>>s = 'apple,pear,grape,pineapple,orange'
>>>s.split(',')
['apple', 'pear', 'grape', 'pineapple', 'orange']

join(리스트)는 구분자 문자열과 문자열 리스트(튜플)의 요소를 연결하여 문자열로 만듭니다. 먼저 변수에 문자열의 중간에 들어갈 구분자 문자열을 넣어줍니다. 여기서는 공백 ' '과 마이너스 '-'를 넣었습니다. 그리고 공백에 join을 사용하면 각 문자열 사이에 공백이 들어가고, 마이너스에 join을 사용하면 각 문자열 사이에 마이너스가 들어갑니다.

>>> a = ' '
>>> a.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple pear grape pineapple orange'
>>> a = '-'
>>> a.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple-pear-grape-pineapple-orange'

upper()는 문자열의 문자를 모두 대문자로 바꾸고, lower()는 문자열의 문자를 모두 소문자로 바꿉니다.

>>> s = 'python'
>>> s.upper()
'PYTHON'
>>> s = 'PYTHON'
>>> s.lower()
'python'

lstrip()은 문자열에서 왼쪽 공백을 모두 삭제하고, rstrip()은 오른쪽 공백을 모두 삭제합니다. strip()은 양쪽 공백을 모두 삭제합니다.

>>> s = '   Python   '
>>> s.lstrip()
'Python   '
>>> s.rstrip()
'   Python'
>>> s.strip()
'Python'

lstrip(삭제할문자들), rstrip(삭제할문자들), strip(삭제할문자들)과 같이 삭제할 문자들을 문자열 형태로 넣어주면 해당 문자들을 삭제합니다. 다음은 문자열에서 ,(콤마)와 .(점)을 삭제합니다. 단, 여기서는 공백을 넣지 않았으므로 공백은 삭제하지 않습니다.

>>> s = ', python.'
>>> s.lstrip(',.')
' python.'
>>> s.rstrip(',.')
', python'
>>> s.strip(',.')
' python'

zfill(길이)는 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채웁니다. 단, 문자열의 길이보다 지정된 길이가 작다면 아무것도 채우지 않습니다. 보통 zfill은 숫자를 일정 자릿수로 맞추고 앞자리는 0으로 채울 때 사용합니다.

>>> '35'.zfill(4)
'0035'
>>> '3.5'.zfill(6)
'0003.5'
>>> 'hello'.zfill(10)
'00000hello'

이번에는 문자열의 정보를 얻는 메서드입니다.

find(찾을문자열)은 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환합니다. find는 왼쪽에서부터 문자열을 찾으므로 같은 문자열이 여러 개 있으면 가장 먼저 찾은 문자열의 인덱스를 반환합니다. 여기서는 'pl'이 두 개 있지만 왼쪽에서 가장 처음 나온 'pl'의 인덱스 2를 반환합니다.

>>> s = 'apple pineapple'
>>> s.find('pl')
2
>>> s.find('xy')
-1

rfind(찾을문자열)은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환합니다(없으면 -1). 여기서는 'pl'이 두 개 있지만 오른쪽에서 가장 처음 나온 'pl'의 인덱스 12를 반환합니다.

>>> s = 'apple pineapple'
>>> s.rfind('pl')
12

index(찾을문자열)은 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환하고, rindex(찾을문자열)은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환합니다. 단, 문자열이 없으면 에러를 발생시킵니다.

>>> s = 'apple pineapple'
>>> s.index('pl')
2
>>> s.rindex('pl')
12

count(문자열)은 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아냅니다. 여기서는 'pl'이 두 번 나오므로 2가 반환됩니다.

>>> s = 'apple pineapple'
>>> s.count('pl')
2