python 內(nèi)置類(lèi)型(五)---str

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)義序列和rraw)前綴,禁用大多數(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()的行為取決于是否給出encodingerrors,如下所示:

如果encodingerrors都沒(méi)有給出胆描,str(object)返回object .__ str__()瘫想,這是objectinformal或可打印的字符串表示形式。對(duì)于字符串對(duì)象昌讲,這是字符串本身国夜。如果object沒(méi)有__str__()方法,那么str ()回退到repr(object)短绸。

如果給出encodingerrors中的至少一個(gè)车吹,object應(yīng)該是bytes-like object(例如bytesbytearray)。在這種情況下醋闭,如果objectbytes(或bytearray)對(duì)象窄驹,那么str(bytes,encoding目尖,errors)等同于bytes.decode(encoding馒吴,errors)。否則瑟曲,在調(diào)用bytes.decode()之前獲取緩沖區(qū)對(duì)象的字節(jié)對(duì)象饮戳。

不帶參數(shù)encodingerrors的將bytes對(duì)象傳遞給str()屬于返回informal字符串表示形式的第一種情況

>>> str(b'Zoot!')
"b'Zoot!'"

4.7.1. String Methods

字符串支持所有通用的序列方法,還支持以下所述的方法

字符串還支持兩種格式的字符串格式洞拨,一種提供了很大的靈活性和定制(參見(jiàn)str.format()扯罐,Format String SyntaxCustom 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ù)startend為切片符號(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ù)startend被解釋為切片符號(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_pointthousands_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è)返回Truec.isalpha()轴捎,c.isdecimal()c.isdigit()c.isnumeric()蚕脏,則字符cisalnum轮蜕。

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í)符谜诫,如defclass漾峡。

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.stdoutsys.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ù)startend被解釋為切片符號(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筷登,否則返回Falseprefix也可以是一個(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ì)象珊楼,通常是mappingsequence陆盘。當(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 literalsstr.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:

  1. The '%' character, which marks the start of the specifier.
  2. Mapping key (optional), consisting of a parenthesised sequence of characters (for example, (somename)).
  3. Conversion flags (optional), which affect the result of some conversion types.
  4. 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.
  5. 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.
  6. Length modifier (optional).
  7. 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:

  1. The alternate form causes a leading octal specifier ('0o') to be inserted before the first digit.

  2. 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.

  3. 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.

  4. 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.

  5. If precision is N, the output is truncated to N characters.

  6. 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 其他蔑赘,未賦值(不存在任何字符具有此屬性)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市预明,隨后出現(xiàn)的幾起案子缩赛,更是在濱河造成了極大的恐慌,老刑警劉巖撰糠,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酥馍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阅酪,警方通過(guò)查閱死者的電腦和手機(jī)旨袒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)术辐,“玉大人砚尽,你說(shuō)我怎么就攤上這事∈趼穑” “怎么了尉辑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵帆精,是天一觀的道長(zhǎng)较屿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卓练,這世上最難降的妖魔是什么隘蝎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮襟企,結(jié)果婚禮上嘱么,老公的妹妹穿的比我還像新娘。我一直安慰自己顽悼,他們只是感情好曼振,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布几迄。 她就那樣靜靜地躺著,像睡著了一般冰评。 火紅的嫁衣襯著肌膚如雪映胁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天甲雅,我揣著相機(jī)與錄音解孙,去河邊找鬼。 笑死抛人,一個(gè)胖子當(dāng)著我的面吹牛弛姜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妖枚,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼廷臼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了绝页?” 一聲冷哼從身側(cè)響起中剩,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抒寂,沒(méi)想到半個(gè)月后结啼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屈芜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年郊愧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片井佑。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡属铁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躬翁,到底是詐尸還是另有隱情焦蘑,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布盒发,位于F島的核電站例嘱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宁舰。R本人自食惡果不足惜拼卵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛮艰。 院中可真熱鬧腋腮,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至聪富,卻和暖如春实柠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背善涨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工窒盐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钢拧。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓蟹漓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親源内。 傳聞我的和親對(duì)象是個(gè)殘疾皇子葡粒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,475評(píng)論 0 23
  • 4.8. Binary Sequence Types — bytes, bytearray, memoryview...
    xpf2000閱讀 4,964評(píng)論 0 1
  • 前些天心血來(lái)潮想喝牛奶颂斜,到超市后發(fā)現(xiàn)種類(lèi)繁多夫壁,不知如何下手,于是選了常出現(xiàn)在電視和視頻廣告里的那個(gè)經(jīng)典沃疮,然后高...
    細(xì)雨無(wú)痕閱讀 328評(píng)論 0 0
  • 不經(jīng)意間盒让,身邊的人一個(gè)個(gè)都抱起來(lái)了孩子,一個(gè)個(gè)朋友在朋友圈秀著恩愛(ài)司蔬,身邊的長(zhǎng)輩邑茄、朋友開(kāi)始催著你結(jié)婚,逢年過(guò)節(jié)...
    求為閱讀 412評(píng)論 1 1
  • 愛(ài)別離 恨離離 對(duì)酒當(dāng)歌 人生幾何 痛到深處 大聲呼喊 只剩嘶啞 情到深處 方知酒濃 一切已晚 寂靜夜晚 心已沉重...
    羅瑛敦閱讀 215評(píng)論 4 10