ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩도장] day13. 문자열 응용하기(1/2) - 문자열 메서드(replace(), split(), join(), strip())
    IT/파이썬 2020. 8. 27. 00:40

    ■ 들어가기

    - 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그


    ▶ Unit24. 문자열 응용하기

         - 24.1 문자열 조작하기

         - 24.2 문자열 서식 지정자와 포매팅 사용하기

     

    - 리스트 : 요소 여러 개가 연속적으로 이어져 있는 시퀀스 자료형

    - 문자열 : 문자 여러 개가 연속적으로 이어져 있는 시퀀스 자료형

    (시퀀스 자료형? : 값이 연속적으로 이어진 자료형, ex: 리스트, 튜플, range, 문자열)

     

    >> 24.1 문자열 조작하기 <<

    - 파이썬에서 제공하는 문자열 메서드 이용

     

    1. 문자열 바꾸기 - replace()

    - 문자열 안의 문자열을 다른 문자열로 변경

    - 문자열 자체를 변경하는 것이 아니라, 변경된 결과를 return

    - 사용법 : replace('바꿀문자열', '새문자열')

     

    >>> a = 'Hello, world!'
    >>> a
    'Hello, world!'
    >>> a.replace('world', 'Python')    # 문자열 변경, but 원본은 유지
    'Hello, Python!'
    >>> a
    'Hello, world!'
    >>> a = a.replace('world', 'Python')    # 문자열 변경 후 원본 변경
    >>> a
    'Hello, Python!'

     

    2. 문자 바꾸기

    - 사용법:

    1) str.maketrans('바꿀문자', '새문자') 로 변환테이블 생성

    2) translate(테이블) 로 문자를 변경

    - str.maketrans() 로 생성된 테이블은 key-value 쌍의 딕셔너리({key:value} 형태)로 저장되며, ASCII 값으로 저장됨

    - 원본은 변경되지 않으며 변경된 값만 return

    >>> table = str.maketrans('aeiou', '12345')     # 변환 테이블 생성
    >>> table
    {97: 49, 101: 50, 105: 51, 111: 52, 117: 53}     # 딕셔너리 형태로 key-value값 저장
    >>> a = 'apple'
    >>> a
    'apple'
    >>> a.translate(table)     # 문자열 변경
    '1ppl2'
    >>> a
    'apple'    # 문자열 변경 후 원본 변경

     

    3. 문자열 분리하기

    - 사용법1: split()

    - 공백을 기준으로 문자열을 분리하여 리스트로 생성

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

    - 사용법2: split('기준문자열')

    - 기준 문자열로 문자열을 분리하여 리스트로 생성

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

     

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

    - 사용법: join(리스트)

    - 구분자 문자열과 문자열 리스트의 요소를 연결하여 새로운 문자열로 생성

    >>> b
    'apple, pear, grape, pineapple, orange'
    >>> c = b.split(',')     # 쉼표(',')로 문자열 분리
    >>> c
    ['apple', ' pear', ' grape', ' pineapple', ' orange'] # 실제 문자열 사이는 ', ' 과 같이 "쉼표+공백"여서 공백은 제거되지 않음
    >>> c = b.split(', ')
    >>> c
    ['apple', 'pear', 'grape', 'pineapple', 'orange']
    >>> ' '.join(c)      # 각 문자열 사이에 공백(' ')이 들어가도록 생성
    'apple pear grape pineapple orange'
    >>> '-'.join(c)      # 각 문자열 사이에 마이너스('-')가 들어가도록 생성
    'apple-pear-grape-pineapple-orange'

     

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

    - 사용법: upper()

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

     

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

    - 사용법: lower()

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

     

    7. 공백 삭제하기

    - lstrip() : 문자열에서 왼쪽에 있는 연속된 모든 공백을 삭제

    - rstrip() : 문자열에서 오른쪽에 있는 연속된 모든 공백을 삭제

    - strip() : 문자열에서 양쪽에 있는 연속된 모든 공백을 삭제

    >>> d = '       Python      '
    >>> d
    '       Python      '
    >>> d.lstrip()     # 왼쪽 공백 삭제
    'Python      '
    >>> d.rstrip()     # 오른쪽 공백 삭제
    '       Python'
    >>> d.strip()     # 양쪽 공백 삭제
    'Python'

     

    8. 특정 문자 삭제하기

    - lstrip('삭제할 문자들') : 삭제할 문자들을 문자열 형태로 넣어 문자열 왼쪽에 있는 해당 문자를 삭제

    - rstrip('삭제할 문자들') : 삭제할 문자들을 문자열 형태로 넣어 문자열 오른쪽에 있는 해당 문자를 삭제

    - strip('삭제할 문자들') : 삭제할 문자들을 문자열 형태로 넣어 문자열 양쪽에 있는 해당 문자를 삭제

    >>> e = ', python.'
    >>> e
    ', python.'
    >>> e.lstrip(',.')      # 왼쪽 지정 문자 삭제
    ' python.'
    >>> e.rstrip(',.')      # 오른쪽 지정 문자 삭제
    ', python'
    >>> e.strip(',.')      # 양쪽 지정 문자 삭제
    ' python'

     

    9. 문자열 정렬하기

    - ljust(길이) : 문자열을 지정된 '길이'로 만든 뒤, 왼쪽으로 정렬하며 남는 공간은 공백으로 채움

    - rjust(길이) : 문자열을 지정된 '길이'로 만든 뒤, 오른쪽으로 정렬하며 남는 공간은 공백으로 채움

    - center(길이) : 문자열을 지정된 '길이'로 만든 뒤, 가운데로 정렬하며 남는 공간은 공백으로 채움

                                ( 남는 공간은 왼쪽 > 오른쪽 우선순위로 채워짐 )

    >>> f = 'python'
    >>> f
    'python'
    >>> f.ljust(10)       # 10의 길이에 왼쪽 정렬 후 공백 채움
    'python    '
    >>> f.rjust(10)       # 10의 길이에 오른쪽 정렬 후 공백 채움
    '    python'
    >>> f.center(10)       # 10의 길이에 가운데 정렬 후 공백 채움
    '  python  '

     

    10. 메서드 체이닝

    - 문자열 메서드는 처리한 결과를 반환하게 되어 있으며, 메서드를 계속 연결해서 호출하는 "메서드 체이닝" 가능

    - 메서드 체이닝 : 메서드를 체인과 같이 줄줄이 연결한다는 의미

    - 예제

    1) 문자열을 오른쪽 정렬 후 대문자로 변환

    2) 문자열 입력받고 '공백'을 기준으로 자르기

    >>> 'python'.rjust(10).upper()
    '    PYTHON'
    >>> input().split()
    a b c d e
    ['a', 'b', 'c', 'd', 'e']

     

    11. 문자열 왼쪽에 0 채우기

    - 사용법: zfill(길이)

    - 지정된 '길이'에 맞춰서 문자열의 왼쪽에 0을 채움 (zero fill 의미)

    - 문자열의 길이보다 지정된 '길이'가 짧다면 아무것도 채우지 않음

    - 일반적으로 zfill은 숫자를 일정 자릿 수로 맞추고 앞자리는 0으로 채울 시 사용함

    >>> '35'.zfill(4)        # 숫자 앞에 0을 채움
    '0035'
    >>> '11111'.zfill(2)        # 문자열의 길이보다 짧은 '길이'는 수행하지 않음
    '11111'
    >>> '3.5'.zfill(6)        # 숫자 앞에 0을 채움
    '0003.5'
    >>> 'hello'.zfill(10)        # 문자열 앞에 0을 채움
    '00000hello'

     

    12. 문자열 위치 찾기

    - 사용법1: find('찾을 문자열')

    - 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환

    - 왼쪽부터 문자열을 찾으며, 같은 문자열이 여러 개인 경우 처음 찾은 문자열의 인덱스를 반환

    - 예제

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

    - 사용법2: rfind('찾을 문자열')

    - 오른쪽에서부터 특정 문자열을 찾아 인덱스를 반환, 문자열이 없으면 -1 반환

    - 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환

    - 예제

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

     

    13. 문자열 위치 찾기

    - 사용법1: index('찾을 문자열')

    - 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환

    - 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환, 문자열이 없으면 에러를 발생

    - 예제

    >>> a
    'apple pineapple'
    >>> a.index('pl')
    2
    >>> a.index('xy')
    Traceback (most recent call last):
      File "<pyshell#153>", line 1, in <module>
        a.index('xy')
    ValueError: substring not found

    - 사용법2: rindex('찾을 문자열')

    - 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환

    같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환, 문자열이 없으면 에러를 발생

    - 예제

    >>> a
    'apple pineapple'
    >>> a.rindex('pl')
    12
    >>> a.rindex('xy')
    Traceback (most recent call last):
      File "<pyshell#158>", line 1, in <module>
        a.rindex('xy')
    ValueError: substring not found

     

    14. 문자열 개수 세기

    - 사용법: count('문자열')

    - 현재 문자열에서 특정 문자열이 몇 번 나오는지 확인

    - 찾을 문자열이 없는 경우 0 반환

    - 예제

    >>> a
    'apple pineapple'
    >>> a.count('pl')
    2
    >>> a.count('xy')
    0

     

     

    ● 요약 ●

    1. 파이썬에서 제공하는 메서드가 정말 많구나!

    2. 기존 C/C++에서 문자열 조작은 날 것을 그대로 만지는 거였구나....

    3. 파이썬에서 제공하는 메서드 적극 활용하자!!

    댓글

Designed by Tistory.