이 글에서는 개요, 문자열 대소문자 변환, 문자열 형식 출력, 문자열 검색, 위치 지정 및 대체, 문자열 결합 및 분할, 문자열 판단, 문자열 인코딩 등 Python에 내장된 문자열 메서드 중 일부를 주로 소개합니다.
문자열 처리는 매우 일반적인 기술이지만 Python에는 내장된 문자열 메서드가 너무 많아 종종 잊어버리곤 합니다. 빠른 참고를 위해 각 내장 메서드는 Python 3.5.1을 기반으로 특별히 작성되었습니다. 예제는 쉽게 분류됩니다. 인덱싱.
PS: 개요에서 녹색 제목을 클릭하여 해당 카테고리를 입력하거나 오른쪽 사이드바에 있는 기사 디렉토리를 통해 해당 방법을 빠르게 색인화할 수 있습니다.
대소문자 변환
str.capitalize()
첫 글자를 대문자로 변환 , 첫 번째 단어가 대문자 형식이 아닌 경우 원래 문자열이 반환된다는 점에 유의하세요.
'adi dog'.capitalize()
# 'Adi dog'
'abcd Xu'.capitalize()
# 'Abcd Xu'
'Xu abcd'.capitalize()
# 'Xu abcd'
'ß'.capitalize()
# 'SS'
str. lower()
문자열을 소문자로 변환합니다. 이는 ASCII로 인코딩된 문자에만 유효합니다.
'DOBI'.lower()
# 'dobi'
'ß'.lower() # 'ß'는 독일어 소문자로, 여기에 또 다른 소문자 'ss'가 있습니다. , lower 메소드는 변환할 수 없습니다
# 'ß'
'Xu ABCD'.lower()
# 'Xu abcd'
str.casefold ( )
문자열을 소문자로 변환합니다. 유니코드 인코딩의 해당 소문자 형식이 변환됩니다.
'DOBI'.casefold()
# 'dobi'
'ß'.casefold() #독일어의 소문자 ß는 소문자 ss와 동일하며, 대문자는 SS
# 'ss'
str.swapcase()
문자열의 대소문자를 반대로 바꿉니다.
'Xu Dobi a123 ß'.swapcase()
#: 'Xu dOBI A123 SS' 여기서 ß는 대문자인 SS로 변환됩니다
단, s라는 점에 유의해야 합니다. swapcase( ).swapcase() == s가 반드시 참은 아닙니다:
u'xb5'
# 'μ'
u'xb5'.swapcase()
# 'Μ'
u'xb5'.swapcase().swapcase()
# 'μ'
hex(ord(u'xb5'.swapcase().swapcase() ))
Out[154]: '0x3bc'
'Μ'(M이 아닌 mu)의 소문자는 'μ'를 쓰는 것과 정확히 같습니다.
str.title()
문자열에 있는 각 "단어"의 첫 글자를 대문자로 표시합니다. "단어"를 판단하는 기준은 띄어쓰기와 구두점을 기준으로 하기 때문에 영어 소유격이나 일부 영어 약어를 대문자로 표기하는 경우 오류가 발생합니다.
'Hello world'.title()
# 'Hello World'
'중국어 abc def 12gh'.title()
# '중국어 Abc Def 12Gh'
# 하지만 이 방법은 완벽하지 않습니다.
"they're Bill's friends from the UK".title()
# "They'Re Bill'S Friends From The UK"
str.upper()
문자열의 모든 문자를 대문자로 변환하고, 대문자로 변환할 수 없는 문자는 자동으로 무시합니다.
'중국어 abc def 12gh'.upper()
# '중국어 ABC DEF 12GH'
s.upper().isupper()가 반드시 True일 필요는 없다는 점에 유의해야 합니다.
문자열 형식 출력
str.center(width[, fillchar])
주어진 너비에 따라 문자열을 가운데에 배치합니다. 지정된 문자 수에 따라 길이를 초과하거나, 지정된 길이가 문자열 길이보다 작은 경우 원래 문자열을 반환합니다.
'12345'.center(10, '*')
# '**12345***'
'12345'.center(10)
# ' 12345 '
str.ljust(width[, fillchar]); str.rjust(width[, fillchar])
왼쪽에 문자열 내용을 포함하여 지정된 길이의 문자열을 반환합니다. (오른쪽) 길이가 문자열 길이보다 작으면 원래 문자열을 반환합니다. 기본 패딩은 ASCII 공백이며, 패딩된 문자열을 지정할 수 있습니다.
'dobi'.ljust(10)
# 'dobi'
'dobi'.ljust(10, '~')
# 'dobi~~~~~ ~'
'dobi'.ljust(3, '~')
# 'dobi'
'dobi'.ljust(3)
# 'dobi'
str.zfill(width)
문자열을 '0'으로 채우고 지정된 너비의 문자열을 반환합니다.
"42".zfill(5)
# '00042'
"-42".zfill(5)
# '-0042'
'dd' .zfill(5)
# '000dd'
'--'.zfill(5)
# '-000-'
' '.zfill(5)
# '0000'
''.zfill(5)
# '00000'
'dddddddd'.zfill(5)
# 'dddddddd'
str.expandtabs(tabsize=8)
인접 문자열 사이의 간격이 지정된 공백 수 내에 유지되도록 가로 탭 문자를 지정된 공백으로 바꿉니다.
탭 = '1t23t456t7890t1112131415t161718192021'
tab.expandtabs()
# '1 23 456 7890 1112131415 161718192021'
# '123456781234567812345678123456 781234567812345678'
탭 위의 공백 개수와 출력 위치 간의 관계 .expandtabs(4)
# '1 23 456 7890 1112131415 161718192021'
# '12341234123412341234123412341234'
str.format(^args,^^kwargs)
🎜>
# '내 이름은 John입니다. 저는 56세입니다.'
text = '외부 보호 덮개'
# 4
# 1
# 0
str.find(sub[, start[, end]]); str.rfind(sub [, start[, end]])
text = '외부 보호 덮개'
# 3
# -1
Out[121]: 3
아웃[122]: 20
아웃[123]: -1
아웃[124]: 20
아웃[125]: 20
아웃[126]: 20
아웃[129]: -1
str.index(sub[, start [, end]]); str.rindex(sub[, start[, end]])
find() rfind()와 유사하지만, 발견되지 않으면 ValueError가 발생한다는 차이점이 있습니다.
'dog wow wow jiao'.replace('wow', 'wang')
# 'dog wang wang jiao'
# 'dog wow wow jiao'
# 'dog wow wow jiao'
# 'dog wang wang jiao'
# 'dog wang wang jiao'
str.lstrip([chars]); str.rstrip([문자]); str.strip([문자])
' dobi'.lstrip()
# 'dobi'
'db.kun.ac.cn'.lstrip(' dbk')
# '.kun.ac.cn'
# ' 도비'
'db.kun.ac.cn'.rstrip( 'acn')
# 'db.kun.ac.'
# 'dobi'
'db.kun.ac.cn'.strip ('db.c')
# 'kun.ac.cn'
'db.kun.ac.cn'.strip('cbd.un')
# 'kun.a'
static str.maketrans(x[, y[, z]]); str.translate(table)
maktrans는 번역에 사용할 비교 테이블을 생성하는 데 사용되는 정적 메서드입니다.
maktrans에 매개변수가 하나만 있는 경우 매개변수는 사전이어야 합니다. 사전의 키는 유니코드 인코딩(정수)이거나 길이가 1인 문자열입니다. 사전의 값은 None 또는 임의의 문자열일 수 있습니다. 유니코드 인코딩.
ord('o')
# 111
# 97
# '0x72d7'
table = str.maketrans(b)
# 'dobi is a dog'
# 'alph hs a alg'
# 'aph hs a ag'
문자열의 결합 및 분할
str.join(iterable)
# '2012-3-12'
# TypeError: 시퀀스 항목 0: 예상되는 str 인스턴스, int 발견
# TypeError: 시퀀스 항목 2: 예상되는 문자열 인스턴스, 바이트가 발견되었습니다
'-'.join(['2012'])
# '2012'
'-'.join([])
# ''
' -'.join([None])
# TypeError: 시퀀스 항목 0: 예상되는 str 인스턴스, NoneType 발견
'-'.join([''])
# ''
','.join({'dobi':'dog', 'polly':'bird'})
# 'dobi,polly'
','.join({ 'dobi':'dog', 'polly':'bird'}.values())
# 'dog,bird'
str.partition(sep); str.rpartition(sep)
'dog wow wow jiao'.partition('wow')
# ('dog', 'wow', 'wow jiao')
'dog wow wow jiao'.partition('dog')
# ('', 'dog', 'wow wow jiao')
'dog wow wow jiao'.partition('jiao')
# ('dog wow wow', 'jiao', '')
'dog wow wow jiao'.partition('ww')
# ('dog wow wow jiao', '', '' )
'dog wow wow jiao'.rpartition('wow')
Out[131]: ('dog wow', 'wow', 'jiao' )
'dog wow wow jiao'.rpartition('dog')
Out[132]: ('', 'dog', 'wow wow jiao')
'dog 와우 와우 jiao'.rpartition('jiao')
Out[133]: ('dog wow wow ', 'jiao', '')
'dog wow wow jiao'.rpartition('ww ')
아웃[135]: ('', '', 'dog wow wow jiao')
str.split(sep=None, maxsplit=-1); str.rsplit(sep=None, maxsplit=-1)
'1,2,3'.split(','), '1, 2, 3'.rsplit()
# (['1 ', '2', '3'], ['1,', '2,', '3'])
'1,2,3'.split(',', maxsplit=1 ), '1,2,3'.rsplit(',', maxsplit=1)
# (['1', '2,3'], ['1,2', '3'])
'1 2 3'.split(), '1 2 3'.rsplit()
# (['1', '2', '3'], ['1', '2 ', '3'])
'1 2 3'.split(maxsplit=1), '1 2 3'.rsplit(maxsplit=1)
# (['1', '2 3'], ['1 2', '3'])
' 1 2 3 '.split()
# ['1', '2', '3']
'1,2,,3,'.split(','), '1,2,,3,'.rsplit(',')
# (['1', '2', '', '3', ''], ['1', '2', '', '3', ''])
''.split()
# []
''.split('a')
# ['']
'bcd'.split('a')
# ['bcd']
'bcd'.split( 없음)
# ['bcd']
str.splitlines([keepends])
字符串以行界符为分隔符拆分为列表;当 keepends 为True,拆分后保留行界符,能被识别的行界符见官方文档。
'ab cnnde fgrklrn'.splitlines()
# ['ab c', '', 'de fg ', 'kl']
'ab cnnde fgrklrn'.splitlines(keepends=True)
# ['ab cn', 'n', 'de fgr', 'klrn']
"".splitlines(), ''.split('n') #注意两者的区别
# ([], [''])
"One Linen".splitlines()
# (['한 줄'], ['두 줄', ''])
字符串条件判断
str.endswith( 접미사[, 시작[, 끝]]); str.startswith(prefix[, start[, end]])
text = '외부 보호 덮개'
text.endswith('ing')
# True
text .endswith(('gin', 'ing'))
# True
text.endswith('ter', 2, 5)
# True
text.endswith('ter ', 2, 4)
# False
str.isalnum()
字符串和数字任意组合,即为真,简而言之:
只要 c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric() 中任意一个为真,则 c.isalnum() 为真。
'dobi'.isalnum()
# True
'dobi123'.isalnum()
# True
'123'.isalnum( )
# 참
'徐'.isalnum()
# 참
'dobi_123'.isalnum()
# 거짓
'dobi 123'.isalnum()
# False
'%'.isalnum()
# False
str.isalpha()
Unicode 字符数据库中작为 “Letter”(这些字符一般具에는 "Lm", "Lt", "Lu", "Ll" 또는 "Lo"가 있습니다. 🎜># 참
'do bi'.isalpha()
# 거짓
'dobi123'.isalpha()
# 거짓
'徐' .isalpha()
# 참
三个方法적 区别에서 于对 유니코드 일반적으로 사용되는 标识적 真值判断范围불동:
isdecimal: Nd,
isdigit: No, Nd,
숫자와 소수의 차이점은 일부 숫자 문자열이 숫자이지만 소수가 아니라는 점입니다. 자세한 내용은 여기를 클릭하세요
num = 'u2155'
print(num)
# ⅕
num .isdecimal(), num.isdigit(), num.isnumeric()
#(False, False, True)
num = 'u00B2'
print(num)
# ²
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, True, True)
num = "1" #unicode
num .isdecimal (), num.isdigit(), num.isnumeric()
# (참, 참, 참)
num = "'Ⅶ'"
num.isdecimal(), num .isdigit (), num.isnumeric()
# (False, False, True)
num = "十"
num.isdecimal(), num.isdigit(), num.isnumeric ()
# (거짓, 거짓, 참)
num = b"1" # byte
num.isdigit() # True
num.isdecimal() # AttributeError 'bytes' 객체에 'isdecimal' 속성이 없습니다
num.isnumeric() # AttributeError 'bytes' 객체에 'isnumeric' 속성이 없습니다
str.isidentifier()
문자열이 유효함은 법적 식별자입니다.
'def'.isidentifier()
# True
'with'.isidentifier()
# True
'false'.isidentifier ()
# 참
'dobi_123'.isidentifier()
# 참
'dobi 123'.isidentifier()
# 거짓
'123'.isidentifier()
# False
str.islower()
'Xu'.islower()
# False
'ß'.islower() #독일어 대문자
# False
'a Xu'.islower()
# True
'ss'.islower()
# True
'23'.islower()
# 거짓
'Ab'.islower()
# 거짓
str.isprintable()
문자열의 모든 문자가 인쇄 가능한 문자인지 또는 문자열이 비어 있는지 판단합니다. 유니코드 문자 집합의 "기타" 및 "구분 기호" 범주에 있는 문자는 인쇄할 수 없는 문자입니다(그러나 ASCII 공백(0x20)은 포함하지 않음).
'dobi123'.isprintable()
# True
'dobi123n'.isprintable()
Out[24]: False
'dobi 123' .isprintable()
# 참
'dobi.123'.isprintable()
# 참
''.isprintable()
# 참
str.isspace()
문자열에 문자가 하나 이상 있는지, 모든 문자가 공백 문자인지 확인합니다.
인 [29]: 'rnt'.isspace()
아웃[29]: True
인 [30]: ''.isspace()
아웃[30 ]: False
In [31]: ' '.isspace()
Out[31]: True
str.istitle()
문자열의 문자가 대문자인지, 알파벳이 아닌 문자는 무시되는지 여부를 결정합니다.
'Python의 작동 방식'.istitle()
# True
'Python의 작동 방식'.istitle()
# False
'Python의 작동 방식 '.istitle()
# False
'Python의 작동 방식'.istitle()
# True
' '.istitle()
# False
''.istitle()
# 거짓
'A'.istitle()
# 참
'a'.istitle()
# 거짓
'Diaoshui Abc Def 123'.istitle()
# True
str.isupper()
'Xu'.isupper()
# False
'DOBI'.isupper()
Out[41]: True
'Dobi'.isupper()
# False
'DOBI123'.isupper()
# 참
'DOBI 123'.isupper()
# 참
'DOBIt 123'.isupper()
# 참
'DOBI_123' . isupper()
# 참
'_123'.isupper()
# 거짓
문자열 인코딩
str.encode(encoding="utf-8", 오류="엄격")
fname = 'Xu'
fname.encode('ascii')
# UnicodeEncodeError: 'ascii' 코덱은 'u5f90' 문자를 인코딩할 수 없습니다...
fname.encode('ascii', 'replace')
# b'?'
fname.encode('ascii', 'ignore')
# b''
fname.encode('ascii', 'xmlcharrefreplace')
# b'Xu'
fname.encode('ascii', 'backslashreplace')
# b'\u5f90'
Python에 내장된 문자열 분석과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 참고하세요. !