String Methods
str.capitalize()
첫 문자가 대문자이고 나머지가 소문자인 문자열의 복사본을 돌려줍니다.
버전 3.8에서 변경: 이제 첫 번째 문자는 대문자가 아닌 title 케이스로 바뀝니다. 이는 이중 문자(digraph)와 같은 문자는 전체 문자 대신 첫 문자만 대문자로 표시된다는 뜻입니다.
"i'm from Korea".capitalize() # -> I'm from korea
str.casefold()
케이스 폴딩 된 문자열을 반환합니다. 케이스 폴딩 된 문자열은 대소문자를 무시한 매칭에 사용될 수 있습니다.
케이스 폴딩은 소문자로 변환하는 것과 비슷하지만 문자열의 모든 케이스 구분을 제거하기 때문에 보다 공격적입니다. 예를 들어, 독일어 소문자 'ß' 는 "ss" 와 동등합니다. 이미 소문자이므로 lower() 는 'ß' 에 아무런 영향을 미치지 않습니다; casefold() 는 "ss" 로 변환합니다.
케이스 폴딩 알고리즘은 유니코드 표준의 섹션 3.13 에 설명되어 있습니다.
버전 3.3에 추가.
'ABC'.casefold() # -> abc
'abc' == 'ABC' # -> False
'abc'.casefold() == 'ABC'.casefold() # -> True
str.center(width[, fillchar])
길이 width 인 문자열의 가운데에 정렬한 값을 돌려줍니다.
지정된 fillchar (기본값은 ASCII 스페이스)을 사용하여 채웁니다. width 가 len(s) 보다 작거나 같은 경우 원래 문자열이 반환됩니다.
'woogie'.center(10, '*') # -> **woogie**
str.count(sub[, start[, end]])
범위 [start, end] 에서 부분 문자열 sub 가 중첩되지 않고 등장하는 횟수를 돌려줍니다.
선택적 인자 start 와 end 는 슬라이스 표기법으로 해석됩니다.
'A*AA*AAA*AAAA*AAA*AA*A'.count('AA') # -> 6
'A*AA*AAA*AAAA*AAA*AA*A'.count('AA', 5, 11) # -> 2
str.encode(encoding='utf-8', errors='strict')
문자열의 바이트열 객체로 인코딩된 버전을 돌려줍니다.
기본 인코딩은 'utf-8' 입니다. errors 는 다른 오류 처리 방식을 설정하기 위해 제공될 수 있습니다. errors 의 기본값은 'strict' 인데, 인코딩 오류가 있으면 UnicodeError 를 일으키라는 뜻입니다. 다른 가능한 값은 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 와 codecs.register_error() 를 통해 등록된 다른 이름들입니다. 에러 처리기를 보세요. 가능한 인코딩의 목록을 보려면 표준 인코딩 섹션을 참조하십시오.
버전 3.1에서 변경: 키워드 인자 지원이 추가되었습니다.
'가나다'.encode(encoding='utf-8', errors='strict')
# -> b'\xea\xb0\x80\xeb\x82\x98\xeb\x8b\xa4'
str.endswith(suffix[, start[, end]])
문자열이 지정된 suffix 로 끝나면 True 를 돌려주고, 그렇지 않으면 False 를 돌려줍니다.
suffix 는 찾고자 하는 접미사들의 튜플이 될 수도 있습니다. 선택적 start 가 제공되면 그 위치에서 검사를 시작합니다. 선택적 end 를 사용하면 해당 위치에서 비교를 중단합니다.
'나는 직장인입니다. 지금 파이썬 공부를 하고 있습니다.'.endswith('니다.')
# -> True
'나는 직장인입니다. 지금 파이썬 공부를 하고 있습니다.'.endswith('니다.', 0, 14)
# -> False (나는 직장인입니다. 지금)
str.expandtabs(tabsize=8)
모든 탭 문자들을 주어진 tabsize로 치환한 문자열의 복사본을 돌려줍니다.
기본값은 8이고, 열 0, 8, 16 등에 탭 위치를 지정합니다.
'01\t012\t0123\t01234'.expandtabs()
# -> 01 012 0123 01234
'01\t012\t0123\t01234'.expandtabs(4)
# -> 01 012 0123 01234
str.find(sub[, start[, end]])
부분 문자열 sub 가 슬라이스 s[start:end] 내에 등장하는 가장 작은 문자열의 인덱스를 돌려줍니다.
선택적 인자 start 와 end 는 슬라이스 표기법으로 해석됩니다. sub 가 없으면 -1 을 돌려줍니다.
'Python'.find('th') # -> 2
'Python'.find('th', 3, 5) # -> -1
str.format(args, kwargs)
이 메서드가 호출되는 문자열은 리터럴 텍스트나 중괄호 {} 로 구분된 치환 필드를 포함할 수 있습니다.*
각 치환 필드는 위치 인자의 숫자 인덱스나 키워드 인자의 이름을 가질 수 있습니다. 각 치환 필드를 해당 인자의 문자열 값으로 치환한 문자열의 사본을 돌려줍니다.
'The sum of 1 + 2 is {0}' # -> The sum of 1 + 2 is {0}
'The sum of 1 + 2 is {0}'.format(1+2) # -> The sum of 1 + 2 is 3
str.format_map(mapping)
str.format(mapping) 과 비슷하지만, dict로 복사되지 않고 mapping 을 직접 사용합니다.**
예를 들어 mapping 이 dict 서브 클래스면 유용합니다:
class Default(dict):
def _missing_(self, key):
return key
str_11 = '{name} was born in {country}'
str_11.format_map(Default(name='Woogie', country='Korea'))
# -> Woogie was born in Korea
str_11.format_map(Default(name='Tanaka', country='Japan'))
# -> Tanaka was born in Japan
str.index(sub[, start[, end]])
find() 과 비슷하지만, 부분 문자열을 찾을 수 없는 경우 ValueError 를 일으킵니다.
'Python'.index('th') # -> 2
'Python'.index('th', 3, 5) # -> Exception has occurred: ValueError
str.isalnum()
*문자열 내의 모든 문자가 알파벳과 숫자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
문자 c 는 다음 중 하나가 True 를 반환하면 알파벳이거나 숫자입니다: c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric().
''.isalnum() # -> False
'abc123'.isalnum() # -> True
str.isalpha()
문자열 내의 모든 문자가 알파벳이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
알파벳 문자는 유니코드 문자 데이터베이스에서 《Letter》로 정의된 문자입니다. 즉, 일반 범주 속성이 《Lm》, 《Lt》, 《Lu》, 《Ll》, 《Lo》 중 하나인 문자입니다. 이것은 유니코드 표준에서 정의된 《Alphabetic》 속성과 다름에 주의하십시오.
''.isalpha() # -> False
'abc'.isalpha() # -> True
str.isascii()
문자열이 비어 있거나 문자열의 모든 문자가 ASCII이면 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
ASCII 문자는 U+0000-U+007F 범위의 코드 포인트를 가집니다.
버전 3.7에 추가.
'.isascii() # -> True
'woogie'.isascii() # -> True
'우기'.isascii() # -> False
str.isdecimal()
문자열 내의 모든 문자가 십진수 문자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
십진수 문자는 십진법으로 숫자를 구성할 때 사용될 수 있는 문자들입니다. 예를 들어, U+0660, ARABIC-INDIC DIGIT ZERO. 형식적으로 십진수 문자는 유니코드 일반 범주 《Nd》 에 속하는 문자입니다.
''.isdecimal() # -> False
'123'.isdecimal() # -> True
'123a'.isdecimal() # -> False
str.isdigit()
문자열 내의 모든 문자가 디짓이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
디짓에는 십진수 문자와 호환성 위 첨자 숫자와 같은 특수 처리가 필요한 숫자가 포함됩니다. 여기에는 카로슈티 숫자처럼 십진법으로 숫자를 구성할 때 사용될 수 없는 것들이 포함됩니다. 형식적으로, 디짓은 속성값이 Numeric_Type=Digit 또는 Numeric_Type=Decimal인 문자입니다.
''.isdigit() # -> False
'123'.isdigit() # -> True
'a123'.isdigit() # -> False
str.isidentifier()
문자열이 섹션 section 식별자와 키워드 의 언어 정의에 따른 유효한 식별자면 True를 돌려줍니다.
문자열 s가 def 나 class와 같은 예약 식별자인지 검사하려면 keyword.iskeyword() 를 호출하십시오.
from keyword import iskeyword
from tkinter.ttk import Separator
'hello'.isidentifier(), iskeyword('hello') # -> True False
'def'.isidentifier(), iskeyword('def') # -> True True
str.islower()
문자열 내의 모든 케이스 문자가 소문자이고, 적어도 하나의 케이스 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
''.islower() # -> False
'abc'.islower() # -> True
'ABC'.islower() # -> False
str.isnumeric()
문자열 내의 모든 문자가 숫자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
숫자는 디짓과 유니코드 숫자 값 속성을 갖는 모든 문자를 포함합니다. 예를 들어, U+2155, VULGAR FRACTION ONE FIFTH. 형식적으로, 숫자는 속성 값이 Numeric_Type=Digit, Numeric_Type=Decimal, Numeric_Type=Numeric인 문자입니다.
''.isnumeric() # -> False
'123'.isnumeric() # -> True
'abc'.isnumeric() # -> False
str.isprintable()
문자열 내의 모든 문자가 인쇄할 수 있거나 문자열이 비어있으면 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
인쇄할 수 없는 문자는 유니코드 문자 데이터베이스에 《Other》 또는 《Separator》로 정의된 문자입니다. ASCII 스페이스 (0x20) 는 예외인데, 인쇄 가능한 것으로 간주합니다. (이 문맥에서, 인쇄 가능한 문자는 문자열에 repr() 을 호출했을 때 이스케이프 되지 않아야 하는 것들입니다. sys.stdout 또는 sys.stderr 로 출력되는 문자열의 처리에 영향을 주지 않습니다.)
''.isprintable() # -> True
'abc'.isprintable() # -> True
'abc \n 123'.isprintable() # -> False
str.isspace()
문자열 내에 공백 문자만 있고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
유니코드 문자 데이터베이스(unicodedata를 참조하십시오)에서, 일반 범주(general category)가 Zs(《Separator, space》)이거나 양방향 클래스(bidirectional class)가 WS, B 또는 S 중 하나이면 문자는 공백(whitespace)입니다.
''.isspace() # -> False
' '.isspace() # -> True
'ABC'.isspace() # -> False
str.istitle()
문자열이 제목 케이스 문자열이고 하나 이상의 문자가 있는 경우 True를 돌려줍니다.
예를 들어 대문자 앞에는 케이스 없는 문자만 올 수 있고 소문자는 케이스 문자 뒤에만 올 수 있습니다. 그렇지 않은 경우는 False를 돌려줍니다.
''.istitle() # -> False
'Abc'.istitle() # -> True
'abc'.istitle() # -> False
str.isupper()
문자열 내의 모든 케이스 문자가 대문자이고, 적어도 하나의 케이스 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다.
''.isupper() # -> False
'Abc'.isupper() # -> True
'abc'.isupper() # -> False
str.join(iterable)
iterable 의 문자열들을 이어 붙인 문자열을 돌려줍니다.
iterable 에 bytes 객체나 기타 문자열이 아닌 값이 있으면 TypeError 를 일으킵니다. 요소들 사이의 구분자는 이 메서드를 제공하는 문자열입니다.
''.join(['A', 'B', 'C']) # -> ABC
str.ljust(width[, fillchar])
왼쪽으로 정렬된 문자열을 길이 width 인 문자열로 돌려줍니다.
지정된 fillchar (기본값은 ASCII 스페이스)을 사용하여 채웁니다. width 가 len(s) 보다 작거나 같은 경우 원래 문자열이 반환됩니다.
'woogie'.ljust(10, '*') # -> woogie****
'woogie'.ljust(5, '*') # -> woogie
str.lower()
모든 케이스 문자가 소문자로 변환된 문자열의 복사본을 돌려줍니다.
'AaBbCc'.lower() # -> aabbcc
str.lstrip([chars])
선행 문자가 제거된 문자열의 복사본을 돌려줍니다.
chars 인자는 제거할 문자 집합을 지정하는 문자열입니다. 생략되거나 None 이라면, chars 인자의 기본값은 공백을 제거하도록 합니다. chars 인자는 접두사가 아닙니다; 모든 값 조합이 제거됩니다:
문자 집합의 모든 것이 아닌 단일 접두사 문자열을 제거하는 메서드는 str.removeprefix()를 참조하십시오.
' spacious'.lstrip() # -> spacious
'www.example.com'.lstrip('cmowz.') # -> example.com
'ccmmoowwwzz.example.com'.lstrip('cmowz.') # -> example.com
'ccmmoowwwaazz.example.com'.lstrip('cmowz.') # -> aazz.example.com
str.partition(sep)
sep 가 처음 나타나는 위치에서 문자열을 나누고, 구분자 앞에 있는 부분, 구분자 자체, 구분자 뒤에 오는 부분으로 구성된 3-튜플을 돌려줍니다.
구분자가 발견되지 않으면, 문자열 자신과 그 뒤를 따르는 두 개의 빈 문자열로 구성된 3-튜플을 돌려줍니다.
'AAA-BBB-CCC'.partition('-') # -> ('AAA', '-', 'BBB-CCC')
'AAABBBCCC'.partition('-') # -> ('AAABBBCCC', '', '')
first, separator, rest = 'AAA-BBB-CCC'.partition('-')
first # -> AAA
separator # -> -
rest # -> BBB-CCC
str.removeprefix(prefix, /)
문자열이 prefix 문자열로 시작하면, string[len(prefix):]를 반환합니다.
그렇지 않으면, 원래 문자열의 사본을 반환합니다
'First_line'.removeprefix('First_') # -> line
'First_line'.removeprefix('first_') # -> First_line
str.removesuffix(suffix, /)
문자열이 suffix 문자열로 끝나고 해당 suffix가 비어 있지 않으면, string[:-len(suffix)]를 반환합니다.
그렇지 않으면, 원래 문자열의 사본을 반환합니다
'First_line'.removesuffix('_line') # -> First
'First_line'.removesuffix('_Line') # -> First_line
str.replace(old, new[, count])
모든 부분 문자열 old 가 new 로 치환된 문자열의 복사본을 돌려줍니다.
선택적 인자 count 가 주어지면, 앞의 count 개만 치환됩니다.
'AAAA'.replace('A', 'B') # -> BBBB
'AAAA'.replace('A', 'B', 2) # -> BBAA
str.rfind(sub[, start[, end]])
부분 문자열 sub 가 s[start:end] 내에 등장하는 가장 큰 문자열의 인덱스를 돌려줍니다.
선택적 인자 start 와 end 는 슬라이스 표기법으로 해석됩니다. 실패하면 -1 을 돌려줍니다.
'ABCDEFG_ABCDEFG'.rfind('BCD') # -> 9
'ABCDEFG_ABCDEFG'.rfind('BCD', 0, 8) # -> 1
'ABCDEFG_ABCDEFG'.rfind('BCD', 5, 8) # -> -1
str.rindex(sub[, start[, end]])
rfind()와 비슷하지만, 부분 문자열 sub 를 찾을 수 없는 경우 ValueError 를 일으킵니다.
'ABCDEFG_ABCDEFG'.rindex('BCD') # -> 9
'ABCDEFG_ABCDEFG'.rindex('BCD', 0, 8) # -> 1
'ABCDEFG_ABCDEFG'.rindex('BCD', 5, 8) # -> Exception has occurred: ValueError
str.rjust(width[, fillchar])
오른쪽으로 정렬된 문자열을 길이 width 인 문자열로 돌려줍니다.
지정된 fillchar (기본값은 ASCII 스페이스)을 사용하여 채웁니다. width 가 len(s) 보다 작거나 같은 경우 원래 문자열이 반환됩니다.
'woogie'.rjust(10, '*') # -> ****woogie
'woogie'.rjust(5, '*') # -> woogie
str.rpartition(sep)
sep 가 마지막으로 나타나는 위치에서 문자열을 나누고, 구분자 앞에 있는 부분, 구분자 자체, 구분자 뒤에 오는 부분으로 구성된 3-튜플을 돌려줍니다.
구분자가 발견되지 않으면, 두 개의 빈 문자열과 그 뒤를 따르는 문자열 자신으로 구성된 3-튜플을 돌려줍니다.
'AAA-BBB-CCC'.rpartition('-') # -> ('AAA-BBB', '-', 'CCC')
'AAABBBCCC'.rpartition('-') # -> ('', '', 'AAABBBCCC')
first, separator, rest = 'AAA-BBB-CCC'.rpartition('-')
first # -> AAA-BBB
separator # -> -
rest # -> CCC
str.rsplit(sep=None, maxsplit=- 1)
sep 를 구분자 문자열로 사용하여 문자열에 있는 단어들의 리스트를 돌려줍니다.
maxsplit 이 주어지면 가장 오른쪽에서 최대 maxsplit 번의 분할이 수행됩니다. sep 이 지정되지 않거나 None 이면, 구분자로 모든 공백 문자가 사용됩니다. 오른쪽에서 분리하는 것을 제외하면, rsplit()는 아래에서 자세히 설명될 split()처럼 동작합니다.
'A B C D E F G H'.rsplit() # -> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
'A-B-C-D-E-F-G-H'.rsplit('-') # -> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
'A-B-C-D-E-F-G-H'.rsplit('-', 4) # -> ['A-B-C-D', 'E', 'F', 'G', 'H']
str.rstrip([chars])
후행 문자가 제거된 문자열의 복사본을 돌려줍니다.
chars 인자는 제거할 문자 집합을 지정하는 문자열입니다. 생략되거나 None 이라면, chars 인자의 기본값은 공백을 제거하도록 합니다. chars 인자는 접미사가 아닙니다; 모든 값 조합이 제거됩니다
' spacious '.rstrip() # -> ____spacious
'mississippi'.rstrip('ipz') # -> mississ
str.split(sep=None, maxsplit=- 1)
sep 를 구분자 문자열로 사용하여 문자열에 있는 단어들의 리스트를 돌려줍니다.
maxsplit 이 주어지면 최대 maxsplit 번의 분할이 수행됩니다 (따라서, 리스트는 최대 maxsplit+1 개의 요소를 가지게 됩니다). maxsplit 이 지정되지 않았거나 -1 이라면 분할 수에 제한이 없습니다 (가능한 모든 분할이 만들어집니다).
'A B C D E F G H'.split() # -> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
'A-B-C-D-E-F-G-H'.split('-') # -> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
'A-B-C-D-E-F-G-H'.split('-', 4) # -> ['A', 'B', 'C', 'D', 'E-F-G-H']
str.splitlines(keepends=False)
줄 경계에서 나눈 문자열의 줄 리스트를 돌려줍니다.
keepends 가 참으로 주어지지 않는 한 결과 리스트에 줄 바꿈은 포함되지 않습니다.
구분자 문자열 sep 이 주어졌을 때 split() 와 달리, 이 메서드는 빈 문자열에 대해서 빈 리스트를 돌려주고, 마지막 줄 바꿈은 새 줄을 만들지 않습니다:
'ab c\n\nde fg\rkl\r\n'.splitlines() # -> ['ab c', '', 'de fg', 'kl']
'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True) # -> ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
''.splitlines() # -> []
'One line\n'.splitlines() # -> ['One line']
''.split('\n') # -> ['']
'Two lines\n'.split('\n') # -> ['Two lines', '']
str.startswith(prefix[, start[, end]])
문자열이 지정된 prefix 로 시작하면 True 를 돌려주고, 그렇지 않으면 False 를 돌려줍니다.
prefix 는 찾고자 하는 접두사들의 튜플이 될 수도 있습니다. 선택적 start 가 제공되면 그 위치에서 검사를 시작합니다. 선택적 end 를 사용하면 해당 위치에서 비교를 중단합니다.
'First_line'.startswith('First_') # -> True
'First_line'.startswith('first_') # -> False
'First_line'.startswith('First_', 0) # -> True
'First_line'.startswith('First_', 1, 5) # -> False
str.strip([chars])
선행과 후행 문자가 제거된 문자열의 복사본을 돌려줍니다.
chars 인자는 제거할 문자 집합을 지정하는 문자열입니다. 생략되거나 None 이라면, chars 인자의 기본값은 공백을 제거하도록 합니다. chars 인자는 접두사나 접미사가 아닙니다; 모든 값 조합이 제거됩니다.
가장 바깥쪽의 선행 또는 후행 chars 인자 값들이 문자열에서 제거됩니다. 문자는 chars 에 있는 문자 집합에 포함되지 않은 문자에 도달할 때까지 맨 앞에서 제거됩니다. 끝에서도 유사한 동작이 수행됩니다. 예를 들면:
' spacious '.strip() # -> spacious
'www.example.com'.strip('cmowz.') # -> example
'#....... Section 3.2.1 Issue #32 .......'.strip('.#! ') # _> Section 3.2.1 Issue #32
str.swapcase()
대문자를 소문자로, 그 반대로 마찬가지로 변환 한 문자열의 복사본을 돌려줍니다.
s.swapcase().swapcase() == s 가 반드시 성립하지 않음에 주의하십시오.
'AbCd'.swapcase() # -> aBcD
'aBcD'.swapcase() # -> AbCd
str.title()
단어가 대문자로 시작하고 나머지 문자는 소문자가 되도록 문자열의 제목 케이스 버전을 돌려줍니다.
'hello world'.title() # -> Hello World
이 알고리즘은 단어를 글자들의 연속으로 보는 간단한 언어 독립적 정의를 사용합니다. 이 정의는 여러 상황에서 작동하지만, 축약과 소유의 아포스트로피가 단어 경계를 형성한다는 것을 의미하고, 이는 원하는 결과가 아닐 수도 있습니다:
"they're bill's friends from the UK".title()
# -> They'Re Bill'S Friends From The Uk
정규식을 사용하여 아포스트로피에 대한 해결 방법을 구성할 수 있습니다:
import re
def titlecase(s):
return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
lambda mo: mo.group(0).capitalize(),
s)
titlecase("they're bill's friends from the UK")
# -> They're Bill's Friends From The Uk
str.upper()
모든 케이스 문자가 대문자로 변환된 문자열의 복사본을 돌려줍니다.
s 가 케이스 없는 문자를 포함하거나 결과 문자의 유니코드 범주가 《Lu》 (Letter, 대문자) 가 아닌 경우, 예를 들어 《Lt》 (Letter, 제목 케이스), s.upper().isupper() 가 False 일 수 있음에 주의하십시오.
str.zfill(width)
길이가 width 인 문자열을 만들기 위해 ASCII '0' 문자를 왼쪽에 채운 문자열의 복사본을 돌려줍니다.
선행 부호 접두어('+'/'-')는 부호 문자의 앞이 아니라 뒤 에 채워 넣는 것으로 처리됩니다. width 가 len(s) 보다 작거나 같은 경우 원래 문자열을 돌려줍니다.
'42'.zfill(5) # -> 00042
'-42'.zfill(5) # -> -0042