Skip to content

14. 문자열 응용하기


1. 키워드

  • 문자열
  • 메서드 체이닝(Method Chaining)


2. 문자열 응용하기

  • 문자열도 문자 여러 개가 연속적으로 이어져 있는 시퀀스 자료형이다.


3. 문자열 조작하기

  • 문자열은 문자열을 조작하거나 정보를 얻는 다양한 메서드를 제공한다.


1) 문자열 바꾸기

  • replace("바꿀문자열", "새문자열")은 문자열 안의 문자열을 다른 문자열로 바꾼다.
  • 이때 문자열 자체는 변경하지 않으며 바뀐 결과를 반환한다.


>>> "Hello, world!".replace("world", "Python")
'Hello, Python!'


  • 만약 바뀐 결과를 유지하고 싶다면 문자열이 저장된 변수에 replace를 사용한 뒤 다시 변수에 할당해 주면 된다.


>>> s = "Hello, world!"

>>> s = s.replace("world!", "Python")

>>> s
'Hello, Python'


2) 문자 바꾸기

  • translate는 문자열 안의 문자를 다른 문자로 바꾼다.
  • 먼저 str.maketrans("바꿀문자, "새문자")로 변환 테이블을 만든다.
  • 그다음에 translate(테이블)을 사용하면 문자를 바꾼 뒤 결과를 반환한다.


>>> table = str.maketrans("aeiou", "12345")

>>> "apple".translate(table)
'1ppl2'


3) 문자열 분리하기

  • split()은 공백을 기준으로 문자열을 분리하여 리스트로 만든다.


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


  • split("기준문자열")과 같이 기준 문자열을 지정하면 기준 문자열로 문자열을 분리한다.
  • 즉, 문자열에서 각 단어가 ,(콤마)와 공백으로 구분되어 있을 때 ", "으로 문자열을 분리하면 단어만 리스트로 만든다.


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


4) 구분자 문자열과 문자열 리스트 연결하기

  • join(리스트)는 구분자 문자열과 문자열 리스트의 요소를 연결하여 문자열로 만든다.


>>> " ".join(["apple", "pear", "grape", "pineapple", "orange"])
'apple pear grape pineapple orange'


5) 소문자를 대문자로 바꾸기

  • upper()는 문자열의 문자를 모두 대문자로 바꾼다.


>>> "python".upper()
'PYTHON'


6) 대문자를 소문자로 바꾸기

  • lower()는 문자열의 문자를 모두 소문자로 바꾼다.


>>> "PYTHON".lower()
'python'


7) 왼쪽 공백 삭제하기

  • lstrip()은 문자열에서 왼쪽에 있는 연속된 모든 공백을 삭제한다.


>>> "   Python   ".lstrip()
'Python   '


8) 오른쪽 공백 삭제하기

  • rstrip()은 문자열에서 오른쪽에 있는 연속된 모든 공백을 삭제한다.


>>> "   Python   ".rstrip()
'   Python'


9) 양쪽 공백 삭제하기

  • strip()은 문자열에서 양쪽에 있는 연속된 모든 공백을 삭제한다.


>>> "   Python   ".strip()
'Python'


10) 왼쪽의 특정 문자 삭제하기

  • lstrip("삭제할문자들")과 같이 삭제할 문자들을 문자열 형태로 넣어주면 문자열 왼쪽에 있는 해당 문자를 삭제한다.


>>> ", python.".lstrip(",.")
' python.'


11) 오른쪽의 특정 문자 삭제하기

  • rstrip("삭제할문자들")과 같이 삭제할 문자들을 문자열 형태로 넣어주면 문자열 오른쪽에 있는 해당 문자를 삭제한다.


>>> ", python.".rstrip(",.")
', python'


12) 양쪽의 특정 문자 삭제하기

  • strip("삭제할문자들")과 같이 삭제할 문자들을 문자열 형태로 넣어주면 문자열 양쪽에 있는 해당 문자를 삭제한다.


>>> ", python.".strip(",.")
' python'


구두점을 간단하게 삭제하기

  • string 모듈의 punctuation에는 모든 구두점이 들어있다.


  • 다음과 같이 strip 메서드에 string.punctuation을 넣으면 문자열 양쪽의 모든 구두점을 간단하게 삭제할 수 있다.


>>> import string

>>> ", python.".strip(string.punctuation)
' python'

>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'


  • 만약 공백까지 삭제하고 싶다면 string.punctuation에 공백을 연결해서 넣어주면 된다.


>>> ", python.".strip(string.punctuation + " ")
'python'


  • 물론 메서드 체이닝을 활용해도 된다.


>>> ", python.".strip(string.punctuation).strip()
'python'


13) 문자열을 왼쪽 정렬하기

  • ljust(길이)는 문자열을 지정된 길이로 만든 뒤 왼쪽으로 정렬하며 남는 공간을 공백으로 채운다.


>>> "python".ljust(10)
'python    '


14) 문자열을 오른쪽 정렬하기

  • rjust(길이)는 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하며 남는 공간을 공백으로 채운다.


>>> "python".rjust(10)
'    python'


15) 문자열을 가운데 정렬하기

  • center(길이)는 문자열을 지정된 길이로 만든 뒤 가운데로 정렬하며 남는 공간을 공백으로 채운다.


>>> "python".center(10)
'  python  '


  • 만약 가운데로 정렬했을 때 전체 길이와 남는 공간이 모두 홀수가 된다면 왼쪽에 공백이 한 칸 더 들어간다.


>>> "python".center(11)
'   python  '


16) 메서드 체이닝

  • 문자열 메서드는 처리한 결과를 반환하도록 만들어져 있다.
  • 따라서 메서드를 계속 연결해서 호출하는 메서드 체이닝이 가능하다.


>>> "python".rjust(10).upper()
'    PYTHON'


17) 문자열 왼쪽에 0 채우기

  • zfill(길이)는 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채운다.
  • zfill은 zero fill을 의미한다.
  • 단, 문자열의 길이보다 지정된 길이가 작다면 아무것도 채우지 않는다.


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


18) 문자열 위치 찾기

  • find("찾을문자열")은 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환한다.
  • find는 왼쪽에서부터 문자열을 찾는데, 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.


>>> "apple pineapple".find("pl")
2
>>> "apple pineapple".find("xy")
-1


19) 오른쪽에서부터 문자열 위치 찾기

  • rfind("찾을문자열")은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환한다.
  • 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.


>>> "apple pineapple".rfind("pl")
12
>>> "apple pineapple".rfind("xy")
-1


20) 문자열 위치 찾기

  • find, rfind 이외에도 index, rindex로 문자열의 위치를 찾을 수 있다.
  • index("찾을문자열")은 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환한다.
  • 단, 문자열이 없으면 에러를 발생시킨다.
  • index도 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.


>>> "apple pineapple".index("pl")
2


21) 오른쪽에서부터 문자열 위치 찾기

  • rindex("찾을문자열")은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환한다.
  • 마찬가지로 문자열이 없으면 에러를 발생시키며 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.


>>> "apple pineapple".rindex("pl")
12


22) 문자열 개수 세기

  • count("문자열")은 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아낸다.


>>> "apple pineapple".count("pl")
2

References