4.7. Text Sequence Type — str
Python中的文本數(shù)據(jù)由str
對(duì)象或strings
處理昵观。字符串是Unicode編碼的不可變序列谤狡。字符串文字以各種方式寫(xiě)入:
- 單引號(hào):
'允許嵌入"雙"引號(hào)'
- 雙引號(hào):
"允許嵌入'單'引號(hào)"
犯祠。 - 三重引號(hào):
'''三個(gè)單引號(hào)'''
竿报,"""三個(gè)雙引號(hào)"""
三重引用的字符串可能會(huì)跨越多行 - 所有相關(guān)的空白字符都將包含在字符串文字中俄删。
兩個(gè)字符串文字之間如果只有空格,則將被隱式轉(zhuǎn)換為單個(gè)字符串文字点待。也就是說(shuō):
>>>'span' 'eggs'
'spaneggs'
請(qǐng)參閱String and Bytes literals了解更多關(guān)于各種形式的字符串的信息阔蛉,包括支持的轉(zhuǎn)義序列和r
(raw
)前綴,禁用大多數(shù)轉(zhuǎn)義序列處理等癞埠。
字符串也可以使用str
構(gòu)造函數(shù)從其他對(duì)象創(chuàng)建状原。
由于Python沒(méi)有單獨(dú)的character
類(lèi)型,索引字符串會(huì)產(chǎn)生長(zhǎng)度為1的字符串燕差。也就是說(shuō)遭笋,對(duì)于非空字符串s
坝冕,s [0] == s [0:1]
徒探。
Python也沒(méi)有可變的字符串類(lèi)型,但str.join()
或io .StringIO
可用于從多個(gè)片段高效地構(gòu)建字符串喂窟。
版本3.3中更改:為了向后兼容Python 2系列测暗,字符串文字再次允許使用u
前綴央串。它對(duì)字符串文字的含義沒(méi)有影響,不能與“r”前綴組合碗啄。
class str(object='')
class str(object=b'', encoding='utf-8', errors='strict') # 針對(duì)byte-like字符串
返回object的string
表示质和。如果未提供object
,則返回空字符串稚字。否則饲宿,str()
的行為取決于是否給出encoding
或errors
,如下所示:
如果encoding
和errors
都沒(méi)有給出胆描,str(object)
返回object .__ str__()
瘫想,這是object
的informal
或可打印的字符串表示形式。對(duì)于字符串對(duì)象昌讲,這是字符串本身国夜。如果object
沒(méi)有__str__()
方法,那么str ()
回退到repr(object)
短绸。
如果給出encoding
或errors
中的至少一個(gè)车吹,object
應(yīng)該是bytes-like object
(例如bytes
或bytearray
)。在這種情況下醋闭,如果object
是bytes
(或bytearray
)對(duì)象窄驹,那么str(bytes,encoding目尖,errors)
等同于bytes.decode(encoding馒吴,errors)
。否則瑟曲,在調(diào)用bytes.decode()
之前獲取緩沖區(qū)對(duì)象的字節(jié)對(duì)象饮戳。
不帶參數(shù)encoding
和errors
的將bytes
對(duì)象傳遞給str()
屬于返回informal
字符串表示形式的第一種情況
>>> str(b'Zoot!')
"b'Zoot!'"
4.7.1. String Methods
字符串支持所有通用的序列方法,還支持以下所述的方法
字符串還支持兩種格式的字符串格式洞拨,一種提供了很大的靈活性和定制(參見(jiàn)str.format()
扯罐,Format String Syntax
和Custom String Formatting
,另一種基于Cprintf
樣式格式處理的類(lèi)型范圍較窄烦衣,稍微難以正確使用歹河,但對(duì)于可處理的情況通常更快(printf-style String Formatting
)。
標(biāo)準(zhǔn)庫(kù)的Text Processing Services
部分涵蓋了許多其他模塊花吟,它們提供了各種文本相關(guān)的工具(包括re
模塊中的正則表達(dá)式支持)秸歧。
str.capitalize()
返回字符串的副本: 除了第一個(gè)字符變?yōu)榇髮?xiě)外(數(shù)字不變),其他的所有字符強(qiáng)制變成小寫(xiě)衅澈。
>>>'123aBcDeFg'.capitalize()
'123abcdefg'
str.casefold()
返回字符串的副本:Casefolded strings may be used for caseless matching.
casefold
類(lèi)似于lower
键菱,但更具侵略性,因?yàn)樗荚趧h除字符串中的所有案例區(qū)別今布。例如经备,德語(yǔ)小寫(xiě)字母?
等同于ss
拭抬。由于它已經(jīng)是小寫(xiě)字母,lower()
對(duì)于?
不起作用 ;但是casefold()
可以將其轉(zhuǎn)換為ss
侵蒙。
>>>'?'.lower()
'?'
>>>'?'.casefold()
'ss'
Unicode標(biāo)準(zhǔn)的第3.13節(jié)描述了casefold的算法造虎。
New in version 3.3.
str.center(width[, fillchar])
返回一個(gè)新的字符串:原本的字符串居中顯示在一個(gè)長(zhǎng)度為width
的字符串中。填充是使用指定的fillchar
(默認(rèn)是ASCII中的空格' ')完成的纷闺。如果width
小于或等于len(s)
算凿,則返回原始字符串。
>>>r = '1234'
>>>r.center(10) # str.center(width) width > len(r)
' 1234 '
>>>r.center(3) # str.center(width) width <= len(r)
'1234'
>>>r.center(10,'.') # str.center(width, fillchar)
'...1234...'
>>>r
'1234'
str.count(sub[, start[, end]])
返回范圍[start犁功,end]中子字符串sub
的非重疊次數(shù)澎媒。可選參數(shù)start
和end
為切片符號(hào)波桩。
str.encode(encoding="utf-8", errors="strict")
以字節(jié)對(duì)象的形式返回字符串的編碼版本戒努。默認(rèn)編碼是“utf-8”。 給出errors
參數(shù)來(lái)設(shè)置不同的錯(cuò)誤處理方案镐躲。 errors
的默認(rèn)值是'strict'储玫,這意味著編碼錯(cuò)誤會(huì)引發(fā)UnicodeError
。其他可能的值是'ignore'萤皂,'replace'撒穷,'xmlcharrefreplace','backslashreplace'和通過(guò)codecs.register_error()
注冊(cè)的任何其他名稱(chēng)裆熙,請(qǐng)參見(jiàn)[Error Handlers
]一節(jié)端礼。有關(guān)可能的編碼列表,請(qǐng)參見(jiàn)[Standard Encodings
]部分入录。
# errors:
# strict
# ignore
# replace
# xmlcharrefreplace
# backslashreplace
# 通過(guò)codecs.register_error()注冊(cè)的任何其他名稱(chēng)
Changed in version 3.1: Support for keyword arguments added.
str.endswith(suffix[, start[, end]])
如果字符串以指定的suffix
結(jié)尾蛤奥,則返回True
,否則返回False
僚稿。 suffix
也可以是一個(gè)由后綴組成的元組凡桥。如果有start
參數(shù),則測(cè)試從start
位置開(kāi)始蚀同。如果有stop
參數(shù)缅刽,則測(cè)試在stop
位置停止
>>>r = 'abcdefgxyz'
>>>r.endswith('xyz') # 匹配到xyz
True
>>>r.endswith(('xyz', 'z')) # 使用元組,匹配到xyz
True
>>>r.endswith(('opq', 'rst','xyz'), -3, len(r)) # 使用元組, (len(r) - 3, len(r))匹配到xyz
True
>>>r.endswith(('opq', 'rst','xyz', 'xy'), -3, len(r) - 1) # 匹配到xy
True
str.expandtabs(tabsize=8)
返回字符串的副本蠢络,其中所有制表符由一個(gè)或多個(gè)空格替換衰猛,具體取決于當(dāng)前列和給定的制表符大小。tab替換出現(xiàn)在每個(gè)\t
字符出現(xiàn)的位置(tabsize默認(rèn)值是8)刹孔。當(dāng)要展開(kāi)字符串時(shí)啡省,當(dāng)前列設(shè)置為零,字符串逐個(gè)檢查。如果該字符是一個(gè)制表符(\ t
)冕杠,則在結(jié)果中插入一個(gè)或多個(gè)空格字符(取決于設(shè)置的tabsize的大小),直到當(dāng)前列等于下一個(gè)制表符位置(制表符本身不被復(fù)制).如果該字符是換行符(\ n
)或返回符號(hào)(\ r
)酸茴,則復(fù)制該字符并將當(dāng)前列重置為零分预。任何其他字符都將被不變地復(fù)制,而當(dāng)前列增加1薪捍,無(wú)論打印時(shí)字符如何表示笼痹。
>>>'01\t012\t0123\t01234'.expandtabs()
'01 012 0123 01234'
>>> '01\t012\t0123\t01234'.expandtabs(4)
'01 012 0123 01234'
str.find(sub[, start[, end]])
返回字符串中離開(kāi)頭最近的索引,其中子字符串sub
在切片的[start:end]內(nèi)找到酪穿〉矢桑可選參數(shù)start
和end
被解釋為切片符號(hào)。如果未找到sub
被济,則返回-1
救赐。
Note:
find
方法只應(yīng)該用于你想知道sub
的位置,如果想檢查sub
是否存在只磷,請(qǐng)使用in
代替:
>>>'Py' in 'Python'
True
str.format(*args, **kwargs)
執(zhí)行字符串格式化操作经磅。調(diào)用此方法的字符串可以包含由大括號(hào){}
分隔的文本文本或替換字段。每個(gè)替換字段包含位置參數(shù)的數(shù)字索引或關(guān)鍵字參數(shù)的名稱(chēng)钮追。返回字符串的副本预厌,其中每個(gè)替換字段被相應(yīng)參數(shù)的字符串值替換。
>>>"The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'
>>>'{a} + 元媚 = {sum}'.format(a=1, b=2, sum=(1 + 2))
'1 + 2 = 3'
有關(guān)可以在格式字符串中指定的各種格式選項(xiàng)的說(shuō)明轧叽,請(qǐng)參見(jiàn)[Format String Syntax
]。
Note
當(dāng)使用n
類(lèi)型(例如{:n}'.format(1234)
)格式化一個(gè)數(shù)字([int
]刊棕,[float
]炭晒,[float
]和其子類(lèi))時(shí),函數(shù)將LC_CTYPE
語(yǔ)言環(huán)境臨時(shí)設(shè)置為LC_NUMERIC
語(yǔ)言環(huán)境甥角,以解碼localeconv()
的decimal_point
和thousands_sep
字段腰埂,如果它們是非ASCII或長(zhǎng)于1個(gè)字節(jié),并且LC_NUMERIC語(yǔ)言環(huán)境不同于LC_CTYPE
區(qū)域設(shè)置蜈膨。此臨時(shí)更改會(huì)影響其他線程屿笼。
locale 是根據(jù)計(jì)算機(jī)用戶所使用的語(yǔ)言,所在國(guó)家或者地區(qū)翁巍,以及當(dāng)?shù)氐奈幕瘋鹘y(tǒng)
所定義的一個(gè)軟件運(yùn)行時(shí)的語(yǔ)言環(huán)境驴一。通常情況下它可以按照涉及使用習(xí)慣分為12大類(lèi):
- 語(yǔ)言符號(hào)及其分類(lèi)(LC_CTYPE)
- 數(shù)字(LC_NUMBERIC)
- 比較習(xí)慣(LC_COLLATE)
- 時(shí)間顯示格式(LC_TIME)
- 貨幣單位(LC_MONETARY)
- 信息主要是提示信息,錯(cuò)誤信息灶壶,狀態(tài)信息肝断,標(biāo)題,標(biāo)簽,按鈕和菜單等(LC_MESSAGES)
- 行么書(shū)寫(xiě)方式(LC_NAME)
- 地址書(shū)寫(xiě)方式(LC_ADDRESS)
- 電話號(hào)碼書(shū)寫(xiě)方式(LC_TELEPHONE)
- 度量衡表達(dá)方式(LC_MEASUREMENT)
- 默認(rèn)紙張尺寸大行匦浮(LC_PAPER)
- 對(duì)locale 自身包含信息的概述(LC_IDENTIFICATION)
- 除此之外還有一個(gè)LANGUAGE參數(shù)担扑,它與LC_MESSAGES相似
Changed in version 3.6.5: 在使用n
類(lèi)型格式化數(shù)字時(shí),函數(shù)在某些情況下會(huì)將LC_CTYPE
語(yǔ)言環(huán)境臨時(shí)設(shè)置為LC_NUMERIC
類(lèi)型趣钱。
str.format_map(mapping)
類(lèi)似于str.format(mapping)
涌献,除了直接使用mapping
而不是復(fù)制到dict
。例如如果mapping
是一個(gè)字典子類(lèi)首有,這是有用的:
>>>class Default(dict):
... def __missing__(self, key):
... return key
...
>>> '{name} was born in {country}'.format_map(Default(name='Guido'))
'Guido was born in country'
New in version 3.2.
str.index(sub[, start[, end]])
類(lèi)似find()
燕垃,但在未找到子字符串時(shí)引發(fā)ValueError
井联。
str.isalnum()
如果字符串中的所有字符都是字母數(shù)字且至少有一個(gè)字符卜壕,則返回true,否則返回false烙常。如果以下其中一個(gè)返回True
:c.isalpha()
轴捎,c.isdecimal()
,c.isdigit()
或c.isnumeric()
蚕脏,則字符c
為isalnum
轮蜕。
str.isalpha()
如果字符串中的所有字符都是字母,并且至少有一個(gè)字符蝗锥,則返回true跃洛,否則返回false。字母字符是在Unicode字符數(shù)據(jù)庫(kù)中定義為“Letter”的那些字符终议,即具有一般類(lèi)別屬性是“Lm”汇竭,“Lt”,“Lu”穴张,“Ll”或“Lo”之一的字符(參閱附錄)细燎。請(qǐng)注意,這與Unicode標(biāo)準(zhǔn)中定義的“字母”屬性不同皂甘。
str.isdecimal()
如果字符串中的所有字符都是十進(jìn)制字符玻驻,并且至少有一個(gè)字符,則返回true偿枕,否則返回false璧瞬。十進(jìn)制字符是那些可以用來(lái)形成基數(shù)為10的數(shù)字,例如U + 0660渐夸,阿拉伯?dāng)?shù)字0嗤锉。形式上,十進(jìn)制字符是Unicode常規(guī)類(lèi)別“Nd”中的字符墓塌。
str.isdigit()
如果字符串中的所有字符都是數(shù)字并且至少有一個(gè)字符瘟忱,則返回true奥额,否則返回false。數(shù)字包含需要特殊處理的十進(jìn)制字符和數(shù)字访诱,例如兼容性上標(biāo)數(shù)字垫挨。這包括不能用來(lái)形成基數(shù)為10的數(shù)字,如Kharosthi數(shù)字触菜。形式上九榔,數(shù)字是具有屬性值Numeric_Type = Digit或Numeric_Type = Decimal的字符。
str.isidentifier()
如果字符串是符合語(yǔ)言定義的有效標(biāo)識(shí)符玫氢,則返回true. 標(biāo)識(shí)符和關(guān)鍵字。
使用keyword.iskeyword()
來(lái)測(cè)試保留的標(biāo)識(shí)符谜诫,如def
和class
漾峡。
str.islower()
如果字符串中的所有cased字符都是小寫(xiě)字母,并且至少有一個(gè)cased字符喻旷,則返回true生逸,否則返回false。
str.isnumeric()
如果字符串中的所有字符都是數(shù)字字符且预,并且至少有一個(gè)字符槽袄,則返回true,否則返回false锋谐。數(shù)字字符包括digit字符和具有Unicode數(shù)字值屬性的所有字符遍尺,例如U + 2155,VULGAR分?jǐn)?shù)ONE FIFTH涮拗。形式上乾戏,數(shù)字字符是具有屬性值Numeric_Type = Digit,Numeric_Type = Decimal或Numeric_Type = Numeric的字符三热。
str.isprintable()
如果字符串中的所有字符都可打印或字符串為空鼓择,則返回true,否則返回false就漾。非可打印字符是在Unicode字符數(shù)據(jù)庫(kù)中定義為“Other”或“Separator”的字符呐能,但ASCII空格(0x20)被認(rèn)為是可打印的。 (注意抑堡,在這個(gè)上下文中的可打印字符是那些在字符串上調(diào)用repr()
時(shí)不應(yīng)該被轉(zhuǎn)義的字符摆出,它不會(huì)影響寫(xiě)入sys.stdout
或sys.stderr
)。
str.isspace()
如果字符串中只有空格字符首妖,并且至少有一個(gè)字符懊蒸,則返回true,否則返回false悯搔∑锿瑁空格字符是在Unicode字符數(shù)據(jù)庫(kù)中定義為“Other”或“Separator”的那些字符舌仍,以及具有“WS”,“B”或“S”之一的雙向?qū)傩缘哪切┳址?/p>
str.istitle()
如果字符串是一個(gè)標(biāo)題字符串通危,并且至少有一個(gè)字符铸豁,則返回true,例如菊碟,大寫(xiě)字符只能跟在uncased字符之后节芥,而小寫(xiě)字符只能在一個(gè)cased字符之后。否則返回false逆害。
str.isupper()
如果字符串中的所有cased字符都是大寫(xiě)且至少有一個(gè)cased字符头镊,則返回true,否則返回false魄幕。
str.join(iterable)
返回一個(gè)字符串相艇,它是iterable中字符串的串聯(lián)。如果
iterable中有任何非字符串值纯陨,包括
bytes對(duì)象坛芽,則會(huì)引發(fā)
TypeError`。元素之間的分隔符是提供此方法的字符串翼抠。
str.ljust(width[, fillchar])
返回一個(gè)新的字符串咙轩。如果width<=len(str)
,則字符串不變,否則將字符串左對(duì)齊阴颖,并且在后面填充fillchar
(默認(rèn)是ASCII的空格).
str.lower()
返回字符串的一個(gè)副本活喊,并將所有字符轉(zhuǎn)換為小寫(xiě)字母。
str.lstrip([chars])
返回刪除前導(dǎo)字符的字符串的副本量愧。 chars
參數(shù)是一個(gè)字符串胧弛,指定要?jiǎng)h除的字符集。如果省略或者None
侠畔,chars
參數(shù)默認(rèn)刪除空格结缚。 chars
參數(shù)不是一個(gè)前綴;相反,它的值的所有組合都被剝離了:
>>> ' spacious '.lstrip()
'spacious '
>>> 'www.example.com'.lstrip('cmowz.')
'example.com'
static str.maketrans(x[, y[, z]])
這個(gè)靜態(tài)方法返回一個(gè)可用于str.translate()
的轉(zhuǎn)換表
如果只有一個(gè)參數(shù)软棺,它必須是一個(gè)將Unicode序數(shù)(整數(shù))或字符(長(zhǎng)度為1的字符串)映射到Unicode序號(hào)红竭,字符串(任意長(zhǎng)度)或None
的字典。字符鍵將被轉(zhuǎn)換為序號(hào)喘落。
如果有兩個(gè)參數(shù)茵宪,它們必須是長(zhǎng)度相等的字符串,并且在結(jié)果字典中瘦棋,x
中的每個(gè)字符將映射到y
中相同位置的字符稀火。
如果有第三個(gè)參數(shù),它必須是一個(gè)字符串赌朋,其字符將被映射到結(jié)果中的None
凰狞。
>>>l = '123qwe'
>>>l.maketrans({'1':'2'})
{49: '2'}
>>>l.maketrans('123','456')
{49: 52, 50: 53, 51: 54}
>>>l.maketrans('123','456', 'qwe')
{49: 52, 50: 53, 51: 54, 113: None, 119: None, 101: None}
str.partition(sep)
在sep
的第一個(gè)出現(xiàn)處拆分字符串篇裁,并返回包含分隔符之前的部分,分隔符本身和分隔符之后的部分的三元組赡若。如果找不到分隔符达布,則返回包含字符串本身及兩個(gè)空字符串的三元組。
>>>l.partition('3')
('12', '3', 'qwe')
>>>l.partition('0')
('123qwe', '', '')
>>>l.partition('234')
('123qwe', '', '')
>>>l.partition('23')
('1', '23', 'qwe')
str.replace(old, new[, count])返回所有出現(xiàn)的子字符串
old替換為
new的字符串的副本逾冬。如果給出可選參數(shù)
count黍聂,則只會(huì)替換
count`次數(shù)。
>>>l = 'youyouyouyou'
>>>l.replace('y', 'r', 2)
'rourouyouyou'
str.rfind(sub[, start[, end]])
返回找到substring sub
的字符串中的最高索引身腻,使得sub
包含在s [start:end]
內(nèi)产还。可選參數(shù)start
和end
被解釋為切片符號(hào)嘀趟。當(dāng)失敗時(shí)返回-1
脐区。
對(duì)比find
方法,此方法為從后往前查找(rfind-->right find)
str.rindex(sub[, start[, end]])
和rfind()
一樣去件,但是在找不到子字符串sub
時(shí)引發(fā)ValueError
坡椒。
對(duì)比index
方法扰路,此方法為從后往前查找(rindex-->right index)
str.rjust(width[, fillchar])
返回字符串右對(duì)齊的長(zhǎng)度為width
的字符串尤溜。填充是使用指定的fillchar
(默認(rèn)是ASCII中的空格)完成的。如果width
小于或等于len(s)
汗唱,則返回原始字符串宫莱。
對(duì)比ljust
方法,此方法為右對(duì)齊哩罪。
str.rpartition(sep)
在sep
的最后出現(xiàn)處拆分字符串授霸,并返回包含分隔符之前的部分,分隔符本身和分隔符之后的部分的三元組际插。如果未找到分隔符碘耳,則返回包含兩個(gè)空字符串的三元組,然后返回字符串本身框弛。
對(duì)比partition
方法辛辨,rpartition從右到左遍歷。
str.rsplit(sep=None, maxsplit=-1)
返回字符串中的單詞列表瑟枫,使用sep
作為分隔符字符串斗搞。如果給出maxsplit
,最多分割maxsplit
次慷妙,此方法從最右邊開(kāi)始分割僻焚。如果sep沒(méi)有指定或者沒(méi)有,則任何空格字符串都是分隔符膝擂。除了從右邊分割外虑啤,[rsplit()
]的行為就像[split()
]隙弛,這在下面詳細(xì)描述。
str.rstrip([chars])
返回刪除了尾隨字符的字符串的副本咐旧。 chars
參數(shù)是一個(gè)字符串驶鹉,指定要?jiǎng)h除的字符集。如果省略或者None
铣墨,chars
參數(shù)默認(rèn)刪除空格室埋。 chars
參數(shù)不是后綴;相反,其值的所有組合都被剝離:
>>> ' spacious '.rstrip()
' spacious'
>>> 'mississippi'.rstrip('ipz')
'mississ'
str.split(sep=None, maxsplit=-1)
返回字符串中的單詞列表伊约,使用sep作為分隔符字符串姚淆。如果給出maxsplit
,最多分割maxsplit
次(因此屡律,該列表最多只有maxsplit + 1
個(gè)元素)腌逢。如果maxsplit沒(méi)有被指定或者是-1
,那么分割的數(shù)量是沒(méi)有限制的(返回所有可能的分割)超埋。
如果給定sep
搏讶,則分割時(shí)連續(xù)的分隔符不會(huì)被分組在一起,并被視為分隔空字符串(例如'1霍殴,2'.split('媒惕,')
返回['1',''来庭,'' 2' ]
)妒蔚。 sep
參數(shù)可以由多個(gè)字符組成(例如,'1<>2<>3'.split('<>')
返回['1'月弛,'2'肴盏,'3']
) 。用指定的分隔符分割空字符串會(huì)返回['']
帽衙。
For example:
>>>'1,2,3'.split(',')
['1', '2', '3']
>>> '1,2,3'.split(',', maxsplit=1)
['1', '2,3']
>>> '1,2,,3,'.split(',')
['1', '2', '', '3', '']
如果未指定* sep *或者為None菜皂,則應(yīng)用不同的分割算法:將連續(xù)空白的運(yùn)行視為單個(gè)分隔符,并且如果該字符串具有前導(dǎo)或結(jié)果厉萝,則在開(kāi)始或結(jié)束時(shí)不會(huì)包含空字符串或拖尾的空白恍飘。因此,將一個(gè)空字符串或一個(gè)只包含空格的字符串與一個(gè)“None”分隔符分開(kāi)將返回[]
冀泻。
For example:
>>>'1 2 3'.split()
['1', '2', '3']
>>> '1 2 3'.split(maxsplit=1)
['1', '2 3']
>>> ' 1 2 3 '.split()
['1', '2', '3']
str.splitlines([keepends])
返回字符串中l(wèi)ines的列表常侣,在lines邊界處突破。換行符不包含在結(jié)果列表中弹渔,除非* keepends *被給出且為真胳施。
此方法分割在以下行邊界上。特別是肢专,邊界是universal newlines
的超集:
Representation | Description |
---|---|
\n |
Line Feed |
\r |
Carriage Return |
\r\n |
Carriage Return + Line Feed |
\v or \x0b
|
Line Tabulation |
\f or \x0c
|
Form Feed |
\x1c |
File Separator |
\x1d |
Group Separator |
\x1e |
Record Separator |
\x85 |
Next Line (C1 Control Code) |
\u2028 |
Line Separator |
\u2029 |
Paragraph Separator |
Changed in version 3.2:將\v
和\f
添加到行邊界列表中舞肆。
For example:
>>> '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']
Unlike [split()
] when a delimiter string sep is given, this method returns an empty list for the empty string, and a terminal line break does not result in an extra line:
與[split()
]不同焦辅,此方法返回空字符串的空列表,并且終端行分隔不會(huì)導(dǎo)致多余行:
>>>"".splitlines()
[]
>>> "One line\n".splitlines()
['One line']
For comparison, split('\n')
gives:
>>>''.split('\n')
['']
>>> 'Two lines\n'.split('\n')
['Two lines', '']
str.startswith(prefix[, start[, end]])
如果字符串以prefix開(kāi)頭椿胯,則返回True
筷登,否則返回False
。 prefix也可以是一個(gè)前綴元組來(lái)查找哩盲。使用可選的start
前方,測(cè)試字符串從該位置開(kāi)始。使用可選的end
廉油,停止在該位置比較字符串惠险。
類(lèi)比endswith.
str.strip([chars])
返回刪除前導(dǎo)字符和尾隨字符的字符串副本。 * chars 參數(shù)是一個(gè)字符串抒线,指定要?jiǎng)h除的字符集班巩。如果省略或者None
, chars *參數(shù)默認(rèn)刪除空格嘶炭。 * chars *參數(shù)不是前綴或后綴;相反抱慌,其值的所有組合都被剝離:
>>>' spacious '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'
從字符串中剝離最外部的前導(dǎo)和尾部chars
參數(shù)值。從前端刪除字符眨猎,直到到達(dá)chars
中字符集中不包含的字符串字符抑进。尾端發(fā)生類(lèi)似的行為。例如:
>>>comment_string = '#....... Section 3.2.1 Issue #32 .......'
>>> comment_string.strip('.#! ')
'Section 3.2.1 Issue #32'
str.swapcase()
返回大寫(xiě)字符轉(zhuǎn)換為小寫(xiě)字符串的副本宵呛,反之亦然单匣。請(qǐng)注意夕凝,s.swapcase().swapcase()== s
不一定成立宝穗。
str.title()
返回字符串的字幕版本,其中字以大寫(xiě)字符開(kāi)頭码秉,其余字符為小寫(xiě)字母逮矛。
For example:
>>> 'Hello world'.title()
'Hello World'
該算法使用簡(jiǎn)單的與語(yǔ)言無(wú)關(guān)的單詞定義作為連續(xù)字母組。這個(gè)定義在很多情況下都有效转砖,但是這意味著收縮和占有者的撇號(hào)(')形成了單詞邊界须鼎,這可能不是理想的結(jié)果:
>>>"they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"
可以使用正則表達(dá)式構(gòu)造撇號(hào)的解決方法:
>>> import re
>>> def titlecase(s):
... return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
... lambda mo: mo.group(0)[0].upper() +
... mo.group(0)[1:].lower(),
... s)
...
>>> titlecase("they're bill's friends.")
"They're Bill's Friends."
str.translate(table)
通過(guò)給定的轉(zhuǎn)換表返回每個(gè)字符已映射的字符串的副本眠冈。該表必須是通過(guò)__getitem __()
實(shí)現(xiàn)索引的對(duì)象珊楼,通常是mapping
或sequence
陆盘。當(dāng)通過(guò)Unicode序數(shù)(整數(shù))索引時(shí)镀琉,表對(duì)象可以執(zhí)行以下任何操作:返回Unicode序號(hào)或字符串贸街,將字符映射到一個(gè)或多個(gè)其他字符;返回None
另萤,從返回字符串中刪除字符;或引發(fā)LookupError
異常共啃,將字符映射到自身濒析。
你可以使用[str.maketrans()
]來(lái)創(chuàng)建不同格式的字符到字符映射的轉(zhuǎn)換映射不铆。
另請(qǐng)參閱codecs
模塊蝌焚,以獲得更靈活的自定義字符映射方法裹唆。
str.upper()
返回字符串的所有字符轉(zhuǎn)換為大寫(xiě)的副本。請(qǐng)注意只洒,如果s
包含uncased字符许帐,或者如果生成的字符的Unicode類(lèi)別不是“Lu”(Letter,大寫(xiě))毕谴,則str.upper().isupper()
可能是False
成畦。比如: “Lt”(Letter,titlecase)涝开。
Unicode標(biāo)準(zhǔn)的第3.13節(jié)描述了The uppercasing algorithm
.
str.zfill(width)
返回一個(gè)左邊填充了ASCII0
數(shù)字的字符串的副本羡鸥,以產(chǎn)生一個(gè)長(zhǎng)度為width
的字符串。 前導(dǎo)符號(hào)前綴('+'
/`` - ')是通過(guò)在符號(hào)字符之后插入填充符*而不是之前處理的忠寻。 如果
width小于或等于
len(s)`惧浴,則返回原始字符串
For example:
>>>"42".zfill(5)
'00042'
>>> "-42".zfill(5)
'-0042'
4.7.2. printf
-style String Formatting
Note
The formatting operations described here exhibit a variety of quirks that lead to a number of common errors (such as failing to display tuples and dictionaries correctly). Using the newer [formatted string literals] or the [str.format()
] interface helps avoid these errors. These alternatives also provide more powerful, flexible and extensible approaches to formatting text.
這里描述的格式化操作表現(xiàn)出各種各樣的怪癖,導(dǎo)致許多常見(jiàn)錯(cuò)誤(如未能正確顯示元組和字典)奕剃。使用新的formatted string literals
或str.format()
接口有助于避免這些錯(cuò)誤衷旅。這些替代方案還提供了更強(qiáng)大,靈活和可擴(kuò)展的方法來(lái)格式化文本纵朋。
字符串對(duì)象有一個(gè)獨(dú)特的內(nèi)置操作:%
操作符(模)柿顶。這也被稱(chēng)為字符串* formatting 或 interpolation 運(yùn)算符。給定format%values
(其中 format 是一個(gè)字符串)操软, format 中的%
轉(zhuǎn)換規(guī)范被替換為 values *的零個(gè)或多個(gè)元素嘁锯。其效果與在C語(yǔ)言中使用sprintf()
類(lèi)似。
If format requires a single argument, values may be a single non-tuple object. [[5]]] Otherwise, values must be a tuple with exactly the number of items specified by the format string, or a single mapping object (for example, a dictionary).
A conversion specifier contains two or more characters and has the following components, which must occur in this order:
- The
'%'
character, which marks the start of the specifier. - Mapping key (optional), consisting of a parenthesised sequence of characters (for example,
(somename)
). - Conversion flags (optional), which affect the result of some conversion types.
- Minimum field width (optional). If specified as an
'*'
(asterisk), the actual width is read from the next element of the tuple in values, and the object to convert comes after the minimum field width and optional precision. - Precision (optional), given as a
'.'
(dot) followed by the precision. If specified as'*'
(an asterisk), the actual precision is read from the next element of the tuple in values, and the value to convert comes after the precision. - Length modifier (optional).
- Conversion type.
When the right argument is a dictionary (or other mapping type), then the formats in the string must include a parenthesised mapping key into that dictionary inserted immediately after the '%'
character. The mapping key selects the value to be formatted from the mapping. For example:
>>>print('%(language)s has %(number)03d quote types.' %
... {'language': "Python", "number": 2})
Python has 002 quote types.
In this case no *
specifiers may occur in a format (since they require a sequential parameter list).
The conversion flag characters are:
Flag | Meaning |
---|---|
'#' |
The value conversion will use the “alternate form” (where defined below). |
'0' |
The conversion will be zero padded for numeric values. |
'-' |
The converted value is left adjusted (overrides the '0' conversion if both are given). |
' ' |
(a space) A blank should be left before a positive number (or empty string) produced by a signed conversion. |
'+' |
A sign character ('+' or '-' ) will precede the conversion (overrides a “space” flag). |
A length modifier (h
, l
, or L
) may be present, but is ignored as it is not necessary for Python – so e.g. %ld
is identical to %d
.
The conversion types are:
Conversion | Meaning | Notes |
---|---|---|
'd' |
Signed integer decimal. | |
'i' |
Signed integer decimal. | |
'o' |
Signed octal value. | (1) |
'u' |
Obsolete type – it is identical to 'd' . |
(6) |
'x' |
Signed hexadecimal (lowercase). | (2) |
'X' |
Signed hexadecimal (uppercase). | (2) |
'e' |
Floating point exponential format (lowercase). | (3) |
'E' |
Floating point exponential format (uppercase). | (3) |
'f' |
Floating point decimal format. | (3) |
'F' |
Floating point decimal format. | (3) |
'g' |
Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. | (4) |
'G' |
Floating point format. Uses uppercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. | (4) |
'c' |
Single character (accepts integer or single character string). | |
'r' |
String (converts any Python object using repr() ). |
(5) |
's' |
String (converts any Python object using str() ). |
(5) |
'a' |
String (converts any Python object using ascii() ). |
(5) |
'%' |
No argument is converted, results in a '%' character in the result. |
Notes:
The alternate form causes a leading octal specifier (
'0o'
) to be inserted before the first digit.The alternate form causes a leading
'0x'
or'0X'
(depending on whether the'x'
or'X'
format was used) to be inserted before the first digit.-
The alternate form causes the result to always contain a decimal point, even if no digits follow it.
The precision determines the number of digits after the decimal point and defaults to 6.
-
The alternate form causes the result to always contain a decimal point, and trailing zeroes are not removed as they would otherwise be.
The precision determines the number of significant digits before and after the decimal point and defaults to 6.
If precision is
N
, the output is truncated toN
characters.See PEP 237.
Since Python strings have an explicit length, %s
conversions do not assume that '\0'
is the end of the string.
Changed in version 3.1: %f
conversions for numbers whose absolute value is over 1e50 are no longer replaced by %g
conversions.
附錄:
Unicode常規(guī)類(lèi)別 | |
---|---|
類(lèi)別 | 說(shuō)明 |
Lu | 字母聂薪,大寫(xiě) |
Ll | 字母家乘,小寫(xiě) |
Lt | 字母,詞首字母大寫(xiě) |
Lm | 字母藏澳,修飾符 |
Lo | 字母仁锯,其他 |
Mn | 標(biāo)記,非間距 |
Mc | 標(biāo)記翔悠,間距組合 |
Me | 標(biāo)記业崖,封閉 |
Nd | 數(shù)字,十進(jìn)制數(shù) |
Nl | 數(shù)字蓄愁,字母 |
No | 數(shù)字双炕,其他 |
Pc | 標(biāo)點(diǎn),連接符 |
Pd | 標(biāo)點(diǎn)撮抓,短劃線 |
Ps | 標(biāo)點(diǎn)妇斤,開(kāi)始 |
Pe | 標(biāo)點(diǎn),結(jié)束 |
Pi | 標(biāo)點(diǎn),前引號(hào)(根據(jù)用途可能表現(xiàn)為類(lèi)似 Ps 或 Pe) |
Pf | 標(biāo)點(diǎn)趟济,后引號(hào)(根據(jù)用途可能表現(xiàn)為類(lèi)似 Ps 或 Pe) |
Po | 標(biāo)點(diǎn)乱投,其他 |
Sm | 符號(hào),數(shù)學(xué) |
Sc | 符號(hào)顷编,貨幣 |
Sk | 符號(hào)戚炫,修飾符 |
So | 符號(hào),其他 |
Zs | 分隔符媳纬,空白 |
Zl | 分隔符双肤,行 |
Zp | 分隔符,段落 |
Cc | 其他钮惠,控制 |
Cf | 其他茅糜,格式 |
Cs | 其他,代理項(xiàng) |
Co | 其他素挽,私用 |
Cn | 其他蔑赘,未賦值(不存在任何字符具有此屬性) |