[Python] String methods

kkiyou·2021년 5월 25일
0

Python

목록 보기
6/12
>>> print(dir(str))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

1. Alphabet

  • str.lower(): 모든 알파벳을 소문자로 변경한다.

    >>> print("Hello, wolrd!".lower())
    hello, wolrd!
  • str.casefold(): 문자열 str의 모든 문자를 소문자로 변경한다. lower()과 다른 점은 영문자 외에 소문자가 존재하는 문자를 소문자로 변경하는 것이다.

    >>> print("Preußen war ein seit dem Spätmittelalter bestehendes Land an der Ostsee.".casefold())
    preussen war ein seit dem spätmittelalter bestehendes land an der ostsee.
  • str.upper(): 문자열 str의 모든 알파벳을 대문자로 변경한다.

    >>> print("Hello, wolrd!".upper())
    HELLO, WOLRD!
  • str.capitalize(): 문자열 str의 첫 번째 알파벳을 대문자로 바꾸고, 다른 알파벳은 모두 소문자로 변경한다.

    >>> print("hELLO, wORLD!".capitalize())
    Hello, world!
  • str.title(): 띄어쓰기, 특수문자 등으로 구분된 문자열 str의 각 첫 번째 알파벳을 대문자로 바꾼다.

    >>> print("they're bill's friends from the UK".title())
    They'Re Bill'S Friends From The Uk
  • str.swapcase(): 문자열 str의 대문자와 소문자를 바꾼다.

    >>> print("Hello, world!".swapcase())
    hELLO, WORLD!


2. True of False

  • str.startswith(prefix[, start[, end]]): str[start:end] 문자열에서 첫 번째 문자열이 prefix인지 확인한다.
    >>> print("Hello, world!".startswith('H'))
    True
  • str.endswith(suffix[, start[, end]]): str[start:end] 문자열에서 마지막 문자열 suffix인지 확인한다.

    >>> print("Hello, world!".endswith('!'))
    True
  • str.isalnum(): 문자열 str이 숫자와 알파벳 만으로 구성되어 있으면 True를 반환한다.

    >>> print("01234five".isalnum())
    True
    >>> print("01234five!".isalnum())
    False
    >>> print("012 34".isalnum())
    False
  • str.isalpha(): 문자열 str이 알파벳 만으로 구성되어 있으면 True를 반환한다.

    >>> print("zeroonetwo".isalpha())
    True
    >>> print("01234five!".isalpha())
    False
  • str.isascii(): 문자열 str이 모두 ASCII문자로 구성되어 있으면 True를 반환한다.

    >>> print("Hello, world!".isascii())
    True
    >>> print("안녕".isascii())
    False
  • str.isdecimal(): 문자열 str 이 10진법의 정수로 바꿀 수 있으면 True를 반환한다.

    >>> print("10.0".isdecimal())
    False
    >>> print("10".isdecimal())
    True
    >>> print("10²".isdecimal()) 
    False
    >>> print("½".isdecimal())
    False
  • str.isdigit(): 문자열 str이 정수와 compatibility superscript digits로 바꿀 수 있으면 True를 반환한다.

    >>> print("10.0".isdigit())
    False
    >>> print("10".isdigit())
    True
    >>> print("10²".isdigit()) 
    True
    >>> print("½".isdigit())
    False
  • str.isnumeric(): 문자열 str이 정수와 Unicode numeric value 값으로 구성되어 있으면 True를 반환한다. 제곱 특수문자와 분수 특수문자 등을 인식한다.

    >>> print("10.0".isnumeric())
    False
    >>> print("10".isnumeric())
    True
    >>> print("10²".isnumeric()) 
    True
    >>> print("½".isnumeric())
    True

isnumeric > isdigit > isdecimal


  • str.islower(): 문자열 str의 알파벳이 모두 소문자면 True를 반환한다.

    >>> print("Hello, world!".islower())
    Fasle
    >>> print("hello, world!".islower())
    True
  • str.isupper(): 문자열 str의 알파벳이 모두 대문자면 True를 반환한다.

    >>> print("Hello, world!".isupper())
    Fasle
    >>> print("HELLO, WORLD!".isupper())
    True
  • str.isprintable(): 문자열 str이 print가 가능하면 True를 반환하고, Unicode에 other로 구분되어 있으면 False를 반환한다.

    >>> print("\u0014".isprintable())
    False
  • str.isspace(): 문자열 str이 모두 공백으로만 되어있으면 True를 반환한다.

    >>> print(" ".isspace())
    True
    >>> print("Hello, world!".isspace())
    False
    >>> print("".isspace())
    False
  • str.istitle(): 문자열 str이 str.title()과 일치하면 True를 반환한다.

    >>> print("Hello, World!".istitle())
    True
    >>> print("Hello, world!".istitle())
    False


3. Alignment(정렬)

  • str.center(width[, fillchar]): width 길이 만큼 fillchar 문자로 채운 뒤, str을 가운데 정렬한다.

    >>> print("Hello, world!".center(20, '#'))
    ###Hello, world!####
    >>> print("Hello, world!".center(10, '#'))
    Hello, world!
  • str.ljust(width[, fillchar]): width 길이 만큼 fillchar 문자로 채운 뒤, str을 왼쪽 정렬(justified)한다.

    >>> print("Hello, world!".ljust(20, '#'))
    Hello, world!#######
  • str.rjust(width[, fillchar]): width 길이 만큼 fillchar 문자로 채운 뒤, str을 오른쪽 정렬(justified)한다.

    >>> print("Hello, world!".rjust(20, '#'))
    #######Hello, world!
    >>> print("-123456".rjust(10, "0"))
    000-123456
  • str.zfill(width): 문자열 str을 width 넓이만큼 ASCILL 0과 원본 문자열을 채운 값을 반환한다. rjust와의 차이점은 -와 + sign을 맨 앞에 위치시킨다는 점이다.

    >>> print("Hello, world!".zfill(20))
    000000Hello, world!
    >>> print("-123456".zfill(10))
    -000123456


  • str.count(sub[, start[, end]]): 문자열 str[start:end]에서 문자(열)sub가 포함된 개수를 반환한다.

    >>> print("Hello, world!".count('o'))
    2
    >>> print("Hello, world!".count("world", 0, 6))
    0
  • str.find(sub[, start[, end]]): 문자열 str[start:end]에서 문자(열)sub를 찾아 첫 번째로 나오는 index를 반환한다. 찾지 못하면 -1을 반환한다.

    >>> print("Hello, world!".find('o'))
    4
    >>> print("Hello, world!".find('o', 5))
    8
    >>> print("Hello, world!".find("ll"))
    2
    >>> print("Hello, world!".find("@"))
    -1
  • str.rfind(sub[, start[, end]]): 문자열 str[start:end]에서 문자(열)sub를 오른쪽 끝에서부터 찾아 첫 번째로 나오는 index를 반환한다. 찾지 못하면 -1을 반환한다.

    >>> print("Hello, world!".rfind('o'))
    8
  • str.index(sub[, start[, end]]): find와 같으나, sub를 찾지 못하면 ValueError를 반환한다.

    >>> print("Hello, world!".index("@"))
    ValueError: substring not found
  • str.rindex(sub[, start[, end]]): rfind와 같으나, sub를 찾지 못하면 ValueError를 반환한다.

    >>> print("Hello, world!".rindex("@"))
    ValueError: substring not found


5. Change

  • str.join(iterable): iterable 문자열을 str으로 합친다.

    >>> print(' '.join(["Hello,", "world!"]))
    Hello, world!
  • str.replace(old, new[, count]): 문자열 str 중 old 문자열을 찾아서, 왼쪽부터 count 만큼 new 문자열로 바꾼다.

    print("Hello, world...".replace('.', "!", 2))
    Hello, world!!.
  • str.split(sep=None, maxsplit=-1): 문자열 str을 문자열 sep을 기준으로 왼쪽부터 maxsplit의 개수만큼 나눈 list를 반환한다. 이때 maxsplit의 값이 없거나 -1이면 발견한 sep(str.count("sep"))의 개수만큼 나눈다.

    >>> print("Apple, Banana, Strawberry, Peach, Mandarin".split(sep=", ")) # ","이 아니다.
    ['Apple', 'Banana', 'Strawberry', 'Peach', 'Mandarin']
    >>> print("Apple, Banana, Strawberry, Peach, Mandarin".split(sep=", ", maxsplit=3))
    ['Apple', 'Banana', 'Strawberry', 'Peach, Mandarin']
  • str.rsplit(sep=None, maxsplit=-1): 문자열 str을 문자열 sep을 기준으로 오른쪽부터 maxslit의 개수만큼 나눈 list를 반환한다. 이때 maxsplit의 값이 없거나 -1이면 발견한 sep(str.count("sep"))의 개수만큼 나눈다.

    >>> print("Apple, Banana, Strawberry, Peach, Mandarin".rsplit(sep=", ", maxsplit=3))
    ['Apple, Banana', 'Strawberry', 'Peach', 'Mandarin']
  • str.splitlines([keepends]): 문자열 str을 Escape sequence로 나눈 list를 반환한다. 이때, keepends가 True이면 특수문자를 포함하여 나눈다.

    Escape sequenceDescription
    \nLine Feed
    \rCarriage Return
    \r\nCarriage Return + Line Feed
    \v or \x0bLine Tabulation
    \f or \x0cForm Feed
    \x1cFile Separator
    \x1dGroup Separator
    \x1eRecord Separator
    \x85Next Line (C1 Control Code)
    \u2028Line Separator
    \u2029Paragraph Separator
  • >>> print("ab c\n\nde fg\rkl\r\n".splitlines())
    ['ab c', '', 'de fg', 'kl']
    >>> print("ab c\n\nde fg\rkl\r\n".splitlines(keepends=True))
    ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
  • str.lstrip([chars]): chars가 없으면 문자열 str에서 왼쪽 공백을 제거한다. chars가 있으면 왼쪽부터 characters 각 문자가 연속으로 나올 때까지 제거한다. 예컨대 "abcde,".lstrip('cba')이면 문자열 abcde에서 왼쪽부터 char 'c', char 'b', char 'a'의 연속된 조합이 나올 때까지 제거하여 'de,'를 반환한다.

    >>> print(" Hello, world!".lstrip(' abcdefgfijklmnopqrstuvwxyzH'))
    , world!
    >>> print(" Hello, world!".lstrip(' abcdefgfijklmnopqrstuvwxyz'))
    Hello, world!
  • str.rstrip([chars]): chars가 없으면 문자열 str에서 오른쪽 공백을 제거한다. chars가 있으면 오른쪽부터 characters 각 문자가 연속으로 나올 때까지 제거한다.

  • str.strip([chars]): chars가 없으면 문자열 str에서 양쪽 공백을 제거한다. chars가 있으면 양쪽에서부터 characters 각 문자가 연속으로 나올 때까지 제거한다.

    >>> print(" Hello, world!".strip(' abcdefgfijklmnopqrstuvwxyzH!'))
  • str.partition(sep): 문자열 str에서 문자열 sep기준으로 3개의 tuple container에 저장한다. sep를 찾을 수 없으면 원본 문자열과 빈 문자열 2개로 이루어진 tuple을 반환한다.

    >>> print("Hello, world!".partition(", "))
    ('Hello', ', ', 'world!')
    >>> print("Hello, world!".partition("@"))
    ('Hello, world!', '', '')
  • str.rpartition(sep):문자열 str에서 문자열 sep기준으로 3개의 tuple container에 저장한다. sep를 찾을 수 없으면 빈 문자열 2개와 원본 문자열로 이루어진 tuple을 반환한다.

    >>> print("Hello, world!".partition(", "))
    ('Hello', ', ', 'world!')
    >>> print("Hello, world!".rpartition("@"))
    ('', '', 'Hello, world!')
  • str.removeprefix(prefix, /): 문자열 str에서 왼쪽 앞에서부터 문자열 prefix(전치사)와 일치하는 문자열을 제거한다. 제거할 것이 없으면 원본 문자열을 반환한다.

    # New in version 3.9.
    >>> print("Hello, world!".removeprefix("Hello"))
    , world!
  • str.removesuffix(suffix, /): 문자열 str에서 오른쪽 끝에서부터 문자열 suffix(접미사)와 일치하는 문자열을 제거한다. 제거할 것이 없으면 원본 문자열을 반환한다.

    # New in version 3.9.
    >>> print("Hello, world!".removesuffix(", world!"))
    Hello


6. Space

  • str.expandtabs(tabsize=8): tab을 tabsize만큼 공백문자로 변환한다.
    >>> print("01\t012\t0123\t01234\t012345".expandtabs(4))
    01  012 0123    01234   012345
    01012012301234012345


7. 기타

  • str.encode(encoding="utf-8", errors="strict")


참고자료1 참고자료2 참고자료3

0개의 댓글