2020-07-09Python學(xué)習(xí)筆記20 字符串方法

一些關(guān)于自己學(xué)習(xí)Python的經(jīng)歷的內(nèi)容肄程,遇到的問(wèn)題和思考等睦擂,方便以后查詢和復(fù)習(xí)得湘。

聲明:本人學(xué)習(xí)是在扇貝編程通過(guò)網(wǎng)絡(luò)學(xué)習(xí)的,相關(guān)的知識(shí)顿仇、案例來(lái)源于扇貝編程淘正。如果使用請(qǐng)說(shuō)明來(lái)源摆马。

第二十關(guān):字符串方法

字符串轉(zhuǎn)化

str = 'feel THE change'

str.upper()

# 將 str 轉(zhuǎn)成全大寫(xiě)并輸出

print(str)

str.lower()

# 將 str 轉(zhuǎn)成全小寫(xiě)并輸出

print(str)

str.swapcase()

# 將 str 進(jìn)行大小寫(xiě)互換并輸出

print(str)

str.title()

# 將 str “標(biāo)題化”并輸出

print(str)

結(jié)果是:

feel THE change

feel THEchange

feel THANGE change

feel THE change

原封不動(dòng)的打出來(lái)了,說(shuō)明轉(zhuǎn)化是沒(méi)有作用的鸿吆,所以想到轉(zhuǎn)化后需要賦值囤采,于是改為


str = 'feel THE change'

str = str.upper()

# 將 str 轉(zhuǎn)成全大寫(xiě)并輸出

print(str)

str = str.lower()

# 將 str 轉(zhuǎn)成全小寫(xiě)并輸出

print(str)

str = str.swapcase()

# 將 str 進(jìn)行大小寫(xiě)互換并輸出

print(str)

str = str.title()

# 將 str “標(biāo)題化”并輸出

print(str)

結(jié)果是:

FEEL THE CHANGE

feel the change

FEEL THECHANGE

Feel The Change

為什么第三個(gè)大小寫(xiě)相互轉(zhuǎn)換中,大寫(xiě)沒(méi)有變成小寫(xiě)呢

第三個(gè)時(shí)行時(shí)不行的惩淳,不知道怎么搞的

第三個(gè)之所以不對(duì)蕉毯,是因?yàn)榍皟蓚€(gè)步驟對(duì)str變量進(jìn)行重新賦值,第三個(gè)根據(jù)第二個(gè)賦值結(jié)果進(jìn)行大小寫(xiě)互換的黎泣,結(jié)果和答案不一致恕刘,答案或題意是針對(duì)原始的字符串進(jìn)行操作的。

經(jīng)過(guò)調(diào)試抒倚,只有第一個(gè)用賦值的方式褐着,第三個(gè)和答案不一樣,如果只是第二個(gè)用賦值的方式托呕,第三個(gè)也和答案不一樣含蓉,第一第二兩個(gè)都用賦值的方式,第三個(gè)也是和答案不一致项郊。其他三個(gè)不影響馅扣,是應(yīng)為其他三個(gè)都進(jìn)行統(tǒng)一的大寫(xiě)、小寫(xiě)着降、首字母大寫(xiě)差油,不管字符串是什么,結(jié)果都是一樣的任洞。而第三個(gè)是大小寫(xiě)互換的蓄喇,所以針對(duì)不同的字符串,操作結(jié)果就是不同的交掏。


str = 'feel THE change'

# 將 str 轉(zhuǎn)成全大寫(xiě)并輸出

print('feel THE change'.upper())? #可以直接用字符串加命令

# 將 str 轉(zhuǎn)成全小寫(xiě)并輸出

print(str.lower())? ?# 可以用變量加命令

str = str.swapcase()

# 將 str 進(jìn)行大小寫(xiě)互換并輸出

print(str)??# 可以轉(zhuǎn)化賦值之后妆偏,在用變量調(diào)用

# 將 str “標(biāo)題化”并輸出

print(str.title())

FEEL THE CHANGE

feel the change

FEEL the CHANGE

Feel The Change

這個(gè)時(shí)候,第三個(gè)又正常了盅弛,有點(diǎn)怪呢钱骂。原因見(jiàn)上面說(shuō)明。這段程序中挪鹏,因?yàn)榈谝粋€(gè)和第二個(gè)沒(méi)有對(duì)變量進(jìn)行重新賦值见秽,所以第三個(gè)可以對(duì)變量進(jìn)行賦值再打印,也可以直接打印轉(zhuǎn)化之后的結(jié)果讨盒,而結(jié)果都是對(duì)的解取,因?yàn)榇藭r(shí)都是針對(duì)原始字符串的操作惕医。

練習(xí):字符串變變變

請(qǐng)你使用 split()逞泄、join()和 strip() 方法將$帶-你-打-開(kāi)-編-程-世-界-的-大-門$ 變成帶~你~打~開(kāi)~編~程~世~界~的~大~門。

str = '$帶-你-打-開(kāi)-編-程-世-界-的-大-門$'

str1 = str.strip('$')?? #? 去掉頭和尾的$

#print(str1)

str2 = str1.split('-')?? #根據(jù)字符串分割了

#print(str2)

str3 = '~'.join(str2)?? #用~符號(hào)把第二步分割的字符串在鏈接起來(lái)

print(str3)

答案是把三個(gè)命令放到一起了潦嘶,先根據(jù)-把字符串給分解了创南,然后在用~把字符串鏈接起來(lái)伦忠,最后是去掉頭尾的$.


練習(xí):字符串操作

請(qǐng)按要求對(duì)字符串進(jìn)行相應(yīng)的操作。

str = 'feel the change'

# 輸出 str 中 e 的個(gè)數(shù)

print(str.count('e'))? ?#變量名.count(‘字符’)? 字符一定要用英文引號(hào)引起來(lái)

# 輸出 str 中 change 的索引值

print(str.find('change'))

# 將 str 中的 change 替換為CHANGE

print(str.replace('change', 'CHANGE'))? # 被替換的和用于替換的都要用英文引號(hào)引起來(lái)

最初我沒(méi)有用引號(hào)稿辙,結(jié)果報(bào)錯(cuò)了昆码。

例子:輸出格式化

format() 方法使用 {} 作為占位符,然后按照參數(shù)順序替換對(duì)應(yīng)的占位符邻储。

我們還可以給占位符編號(hào):

'我叫{0}赋咽,今年 {1} 歲,來(lái)自{2}'.format('小貝', 18, '南京')

# 我叫小貝吨娜,今年 18 歲脓匿,來(lái)自南京

# 調(diào)整編號(hào)順序

'我叫{2},今年 {1} 歲宦赠,來(lái)自{0}'.format('南京', 18, '小貝')

# 我叫小貝陪毡,今年 18 歲,來(lái)自南京

# 重復(fù)編號(hào)

'我叫{0}勾扭,{0}今年 {1} 歲毡琉,來(lái)自{2}'.format('小貝', 18, '南京')

# 我叫小貝,小貝今年 18 歲妙色,來(lái)自南京

我們還可以給占位符命名:

'我叫{name}桅滋,今年 {age} 歲,來(lái)自{city}'.format(name = '小貝', age = 18, city = '南京')

# 我叫小貝身辨,今年 18 歲丐谋,來(lái)自南京

# 命名后參數(shù)順序不再重要

'我叫{name},今年 {age} 歲栅表,來(lái)自{city}'.format(age = 18, city = '南京', name = '小貝')

# 我叫小貝笋鄙,今年 18 歲,來(lái)自南京


? print('今天%s的最高氣溫是%d度'%(weather[0], weather[1]))

?print('今天{}的最高氣溫是{}度'.format(weather[0], weather[1]))

對(duì)比兩種格式化輸出字符串的方法怪瓶,第一種操作符% 直接放在兩個(gè)部分之間

而使用format方法萧落,其前面必須有小點(diǎn).因?yàn)檫@是命令,命令和變量之間或字符之間要有小點(diǎn).鏈接

一個(gè)測(cè)驗(yàn)題

str = '$h-e-l-l-o w-o-r-l-d$'

print('.'.join(str.strip('$').split('-')))


將 '.'.join(str.strip('$').split('-')) 拆開(kāi)來(lái)看洗贰,先是str.strip('$') 得到 h-e-l-l-o w-o-r-l-d找岖,再 'h-e-l-l-o w-o-r-l-d'.split('-') 得到 ['h', 'e', 'l', 'l', 'o

w', 'o', 'r', 'l', 'd'],最后'.'.join(['h', 'e', 'l', 'l', 'o w', 'o', 'r', 'l', 'd']) 得到 h.e.l.l.o w.o.r.l.d敛滋。

第一步先去掉頭尾的$许布,第二步使用-進(jìn)行分割,第三部使用小點(diǎn).進(jìn)行鏈接


練習(xí):拯救圓周率

魔鬼為了阻止人類進(jìn)步绎晃,將數(shù)學(xué)瑰寶圓周率占為己有蜜唾。為了滿足它的私欲杂曲,魔鬼對(duì)圓周率的前99 位進(jìn)行肆意篡改。

現(xiàn)在你偷偷潛入了魔鬼的地穴袁余,需要憑借智慧和利器 Python 將圓周率恢復(fù)擎勘。

現(xiàn)在可以公開(kāi)的情報(bào):

魔鬼最喜歡的數(shù)字是 '6',所以它將圓周率中的 '6' 都取走了颖榜,并以 '6' 為截點(diǎn)將圓周率切割棚饵,形成了一個(gè)“破碎的圓周率”,裝在列表broken_pi 之中掩完;

魔鬼最害怕的數(shù)字是 '9'噪漾,所以它將圓周率中的 '9' 都換成了空字符 ' ';

broken_pi 已被魔鬼打上了符咒且蓬,你需要從中取出碎片欣硼,才能對(duì)其進(jìn)行恢復(fù)。

broken_pi = [

?'3.1415 2',

? '53587 32384',

?'2',

?'4338327 5028841 71',

? '3? 375105820 74 445 230781',

?'40',

?'28',

?'208? 8',

?'280348253421170'

]

pi = '6'.join(broken_pi)? # 使用 '6' 將 broken_pi 中的碎片組合起來(lái)缅疟,用6鏈接列表中的各個(gè)元素

pi = pi.replace(' ', '9')? # 將 pi 中的 ' ' 還原成'9'

print(pi)

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170

第二十關(guān)筆記:

字符帶小寫(xiě)轉(zhuǎn)化:

upper() 用于將字符串中的小寫(xiě)字母轉(zhuǎn)為大寫(xiě)字母分别。

lower() 用于將字符串中的大寫(xiě)字母轉(zhuǎn)為小寫(xiě)字母。

capitalize() 用于將字符串的第一個(gè)字母變成大寫(xiě)存淫,其他字母變小寫(xiě)耘斩。首字符如果是非字母則不變,其他字母變小寫(xiě)桅咆。

title() 用于返回“標(biāo)題化”的字符串——即所有單詞的首字母轉(zhuǎn)為大寫(xiě)括授,其余字母均為小寫(xiě)。

注意:非字母后的第一個(gè)字母將轉(zhuǎn)為大寫(xiě)字母岩饼。

swapcase() 用于對(duì)字符串的大小寫(xiě)字母進(jìn)行互相轉(zhuǎn)換荚虚。

這些都是命令,所以需要用小點(diǎn).把命令和字符串或變量名鏈接起來(lái)籍茧,括號(hào)中不寫(xiě)內(nèi)容

操作結(jié)果可以賦值給變量版述。


分割、組合和移除方法

split() 字符串分割寞冯,用于通過(guò)指定分隔符對(duì)字符串進(jìn)行分割渴析。split() 方法有兩個(gè)可選參數(shù),第一個(gè)參數(shù)為分隔符吮龄,默認(rèn)為所有的空字符俭茧,包括空格、換行(\n)漓帚、制表符(\t)等母债。第二個(gè)參數(shù)為最大分割次數(shù),默認(rèn)為 -1,即不限次數(shù)毡们。

'扇 貝 編 程'.split()? # ['扇', '貝', '編', '程']? ??默認(rèn)利用空格進(jìn)行分割

'扇 貝 編 程'.split('')? # ['扇', '貝', '編', '程']? ?指定用空格進(jìn)行分割

'扇-貝-編-程'.split('-')? # ['扇', '貝', '編', '程']? 利用-進(jìn)行分割

'扇貝編程'.split('貝編')? # ['扇', '程']????????? 利用指定字符進(jìn)行分割

'扇 貝 編 程'.split('', 1)? # ['扇', '貝編 程']?? 利用空格分割迅皇,但是限制次數(shù)


join() 用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串。join() 方法接收一個(gè)序列(列表衙熔、元組喧半、字符串等)作為參數(shù),. 前面的字符串用于連接符青责。

# 列表

''.join(['扇', '貝', '編', '程'])? #扇貝編程

'-'.join(['扇', '貝', '編', '程'])? #扇-貝-編-程

# 元組

'-'.join(('扇', '貝', '編', '程'))? #扇-貝-編-程

# 字符串

'-'.join('扇貝編程')? #扇-貝-編-程

列表、元組取具、字符串等里面的內(nèi)容都是用英文引號(hào)引起來(lái)


strip() 用于移除字符串開(kāi)頭和結(jié)尾指定的字符(默認(rèn)為空字符)或字符序列脖隶。當(dāng)傳入一個(gè)字符串時(shí),會(huì)將傳入字符串中每個(gè)字符依次移除暇检。

' 扇貝編程? '.strip()?# '扇貝編程'

'~~扇貝編程~~'.strip('~')? # '扇貝編程'

'~~扇貝~~編程~~'.strip('~')? # '扇貝~~編程'

'_~_扇貝編程_~~'.strip('~_')? # '扇貝編程'

去掉兩頭的空格或者符號(hào)产阱,不需要順序完全相同,括號(hào)中是指定要去除的內(nèi)容

定位與替換方法:

count()?用于統(tǒng)計(jì)字符串中某個(gè)字符串出現(xiàn)的次數(shù)块仆。第一個(gè)參數(shù)為要統(tǒng)計(jì)次數(shù)的字符串构蹬,后兩個(gè)可選參數(shù)為在字符串搜索的開(kāi)始與結(jié)束索引。


find()?用于檢測(cè)字符串中是否包含子字符串悔据,如果包含子字符串返回第一次出現(xiàn)的索引值庄敛,否則返回 -1。第一個(gè)參數(shù)為要查找的子字符串科汗,后兩個(gè)可選參數(shù)為在字符串搜索的開(kāi)始與結(jié)束索引藻烤。


replace()?用于將字符串中的指定字符串替換成別的字符串。第一個(gè)參數(shù)為被替換字符串头滔,第二個(gè)參數(shù)為替換字符串怖亭,第三個(gè)可選參數(shù)為替換的最多次數(shù),默認(rèn)為無(wú)限次坤检。


格式化輸出方法

除了之前說(shuō)的使用 % 運(yùn)算符 進(jìn)行字符串格式化輸出兴猩,我們還可以使用字符串的 format() 方法達(dá)到同樣的效果。


'我叫{}早歇,今年 {} 歲倾芝,來(lái)自{}'.format('小貝', 18, '南京')

# 我叫小貝,今年 18 歲缺前,來(lái)自南京

注意蛀醉,format前有個(gè)小黑點(diǎn),用來(lái)連接format命令和前面的變量名或者字符串

format() 方法使用{} 作為占位符衅码,然后按照參數(shù)順序替換對(duì)應(yīng)的占位符拯刁。


我們還可以給占位符編號(hào):

'我叫{0},今年 {1} 歲逝段,來(lái)自{2}'.format('小貝', 18, '南京')

# 我叫小貝垛玻,今年 18 歲割捅,來(lái)自南京


# 調(diào)整編號(hào)順序

'我叫{2},今年 {1} 歲帚桩,來(lái)自{0}'.format('南京', 18, '小貝')

# 我叫小貝亿驾,今年 18 歲,來(lái)自南京


# 重復(fù)編號(hào)

'我叫{0}账嚎,{0}今年 {1} 歲莫瞬,來(lái)自{2}'.format('小貝', 18, '南京')

# 我叫小貝,小貝今年 18 歲郭蕉,來(lái)自南京


我們還可以給占位符命名:

'我叫{name}疼邀,今年 {age} 歲,來(lái)自{city}'.format(name = '小貝', age = 18, city =

'南京')

# 我叫小貝召锈,今年 18 歲旁振,來(lái)自南京


# 命名后參數(shù)順序不再重要

'我叫{name},今年 {age} 歲涨岁,來(lái)自{city}'.format(age = 18, city = '南京', name = '小貝')

# 我叫小貝拐袜,今年 18 歲,來(lái)自南京


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梢薪,一起剝皮案震驚了整個(gè)濱河市蹬铺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秉撇,老刑警劉巖丛塌,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異畜疾,居然都是意外死亡赴邻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門啡捶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)姥敛,“玉大人,你說(shuō)我怎么就攤上這事瞎暑⊥玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵了赌,是天一觀的道長(zhǎng)墨榄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)勿她,這世上最難降的妖魔是什么袄秩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上之剧,老公的妹妹穿的比我還像新娘郭卫。我一直安慰自己,他們只是感情好背稼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布贰军。 她就那樣靜靜地躺著,像睡著了一般蟹肘。 火紅的嫁衣襯著肌膚如雪词疼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天帘腹,我揣著相機(jī)與錄音寒跳,去河邊找鬼。 笑死竹椒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的米辐。 我是一名探鬼主播胸完,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼翘贮!你這毒婦竟也來(lái)了赊窥?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狸页,失蹤者是張志新(化名)和其女友劉穎锨能,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芍耘,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡址遇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斋竞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔约。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坝初,靈堂內(nèi)的尸體忽然破棺而出浸剩,到底是詐尸還是另有隱情,我是刑警寧澤鳄袍,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布绢要,位于F島的核電站,受9級(jí)特大地震影響拗小,放射性物質(zhì)發(fā)生泄漏重罪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛆封。 院中可真熱鬧唇礁,春花似錦、人聲如沸惨篱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)砸讳。三九已至琢融,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間簿寂,已是汗流浹背漾抬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留常遂,地道東北人纳令。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像克胳,于是被迫代替她去往敵國(guó)和親平绩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355