Python零基礎(chǔ)入門(mén)學(xué)習(xí)04:Python基本數(shù)據(jù)類(lèi)型:字符串類(lèi)型

:本文所有代碼均經(jīng)過(guò)Python 3.7實(shí)際運(yùn)行檢驗(yàn)塞祈,保證其嚴(yán)謹(jǐn)性邑飒。

字符串的表示

Python提供了4種表示字符串的方法:

s1 = '我'
s2 = "我"
s3 = '''我'''
s4 = """我"""

大多數(shù)情況下循签,以上4種字符串的表示效果是一樣的,只要注意前后的引號(hào)一定是成對(duì)的疙咸;換句話(huà)說(shuō)县匠,前面是單引號(hào)后面一定也是單引號(hào),前面是3個(gè)雙引號(hào)撒轮,后面句不能用3個(gè)單引號(hào)結(jié)尾乞旦。

默認(rèn)來(lái)說(shuō),單純的字符串一般多用第1種腔召,即兩個(gè)單引號(hào)杆查。3個(gè)單引號(hào)和3個(gè)雙引號(hào)有特殊的用途扮惦,就是它們可以用于多行字符串引用臀蛛,如下面的例子:

s = '''
人生到處知何似,應(yīng)似飛鴻踏雪泥: 
泥上偶然留指爪,鴻飛那復(fù)計(jì)東西浊仆。 
老僧已死成新塔客峭,壞壁無(wú)由見(jiàn)舊題。 
往日崎嶇還記否抡柿,路長(zhǎng)人困蹇驢嘶舔琅。'''
print(s)

<<<  # 正確輸出,且是分行的洲劣。
人生到處知何似备蚓,應(yīng)似飛鴻踏雪泥: 
泥上偶然留指爪,鴻飛那復(fù)計(jì)東西囱稽。 
老僧已死成新塔郊尝,壞壁無(wú)由見(jiàn)舊題。 
往日崎嶇還記否战惊,路長(zhǎng)人困蹇驢嘶流昏。
<<<

這種這種功能是2個(gè)單引號(hào)或2個(gè)雙引號(hào)表示法所不能做到的。如果多行字符串用2個(gè)單引號(hào)或2個(gè)雙引號(hào)來(lái)表示的話(huà)吞获,系統(tǒng)會(huì)報(bào)錯(cuò)况凉。如下所示:

s = '人生到處知何似,應(yīng)似飛鴻踏雪泥: 
泥上偶然留指爪各拷,鴻飛那復(fù)計(jì)東西刁绒。 
老僧已死成新塔,壞壁無(wú)由見(jiàn)舊題烤黍。 
往日崎嶇還記否膛锭,路長(zhǎng)人困蹇驢嘶。'
print(s)

<<<
  File "C:\xxxxx\test.py", line 1
    s = '人生到處知何似蚊荣,應(yīng)似飛鴻踏雪泥:
                          ^
SyntaxError: EOL while scanning string literal
<<<
轉(zhuǎn)義符\

轉(zhuǎn)義符表達(dá)特定字符的本意初狰。

轉(zhuǎn)義符和某些字母搭配有固定的意思,比如
"\b"回退互例,"\n"換行(光標(biāo)移動(dòng)到下行首)奢入,"\r"回車(chē)(光標(biāo)移動(dòng)到本行首)等。

字符串操作符

n * x 或 x * n:復(fù)制n次字符串x媳叨。

字符串處理函數(shù)

hex(x):整數(shù)x轉(zhuǎn)化為以字符串形式表示的十六進(jìn)制的數(shù)腥光。

oct(x):整數(shù)x轉(zhuǎn)化八進(jìn)制以字符串形式表示的八進(jìn)制的數(shù)。

chr(u):u為Unicode編碼糊秆,返回其對(duì)應(yīng)的字符武福。

ord(x):x為字符,返回其對(duì)應(yīng)的Uniocde編碼痘番。比如ord("A")輸出65捉片,ord("B")輸出66平痰,ord("a")輸出97。

Unicode編碼
Python 3的字符串的編碼方式

  • 統(tǒng)一字符編碼伍纫,即覆蓋幾乎所有字符的編碼方式宗雇。
  • 0到1114111(0x10FFFF)空間,每個(gè)編碼對(duì)應(yīng)一個(gè)字符莹规。
  • Python字符串中每個(gè)字符都是Unicode編碼字符赔蒲。
for i in range(12):
    print(chr(9800 + i), end = "")

<<<????????????
以上是輸出Unicode中十二星座的符號(hào)。
字符串處理方法

“方法”(method)良漱,在編程中是一個(gè)專(zhuān)有名詞舞虱。

  • “方法”特指<a>.<b>()風(fēng)格中的函數(shù)<b>()。

  • 方法本身也是函數(shù)母市,但與<a>有關(guān)砾嫉,<a>.<b>()風(fēng)格(面向?qū)ο缶幊蹋┦褂谩?lt;a>.<b>()就是對(duì)象.方法()。a是對(duì)象窒篱,b是方法焕刮。

  • 字符串和變量都是<a>,也就是對(duì)象墙杯,存在一些方法配并。

字符串的方法及引用

str.lower()或str.upper()——返回字符串的副本,全部字符小寫(xiě)/大寫(xiě)高镐。

str.split(sep=None, num=-1)——返回一個(gè)列表溉旋。

其中,sep是separater的前三個(gè)字母嫉髓,表示分隔符观腊。sep分隔符默認(rèn)為所有的空字符,包括空格算行、換行(\n)梧油、制表符(\t)等,也可以為空(即不帶任何東西州邢,不帶引號(hào)儡陨,如(str.split()),也可以為空格(如str.split(" "))量淌,但不能為空字符串(str.split(""))骗村,否則會(huì)報(bào)錯(cuò)ValueError: empty separator;num表示分隔的次數(shù)呀枢,默認(rèn)為-1胚股,即全部分隔。

此方法可以將字符串轉(zhuǎn)化成列表裙秋。如"A, B, C".split(",")結(jié)果為['A', 'B', 'C']琅拌。

s = 'a-b-c'
l = s.split('-')
print(l)
l = s.split()  #分隔符sep為空的情況缨伊。
print(l)
l = s.split('-', 1)  #分隔次數(shù)為1的情況。
print(l)

<<<
['a', 'b', 'c']
['a-b-c']  #分隔符sep為空的情況财忽。#
['a', 'b-c']  #分隔次數(shù)為1的情況。#
<<<

str.count(sub)——返回子串sub在str中出現(xiàn)的次數(shù)泣侮。

str.replace(old, new)——返回字符串str的副本即彪,其中所有old子串被替換為new。

str.center(width[, fillchar])——字符串str根據(jù)寬度width居中活尊,fillchar可選隶校。

s1 = "Python"
s2 = s1.center(20, "=")
print("s2是:")
print(s2)
print("len(s2) =", len(s2))

<<<
s2是:
=======Python=======    #字符串s2的長(zhǎng)度len為20
len(s2) = 20
<<<

str.strip()——返回str的副本,這個(gè)副本原字符串的頭和尾的空格蛹锰,以及位于頭尾的\n \t之類(lèi)的字符給刪掉了深胳。注意,字符中間的空格等符號(hào)不刪除铜犬。比如" Py thon ".strip()返回為"Py thon"舞终。

str.strip(chars)——從str中去掉在其左側(cè)和右側(cè)chars字符串中含有的字符。如"= python= ".strip(" =np")的輸出為"ytho"癣猾。

sep.join(seq)——sep表示分隔符敛劝,可以為空,但當(dāng)sep為空時(shí)纷宇,就沒(méi)有分隔符了夸盟。seq表示要連接的元素序列,比如字符串像捶、元組上陕、字典、集合拓春。如果序列里的元素為int释簿,必須轉(zhuǎn)化為str才能使用該方法。實(shí)現(xiàn)的效果是硼莽,把seq轉(zhuǎn)換為字符串辕万,并且在seq中的除最后元素外每個(gè)元素后增加一個(gè)sep,返回一個(gè)以分隔符sep連接各個(gè)元素后生成的字符串沉删。此方法主要為了字符增加分隔符渐尿,將列表等seq轉(zhuǎn)化為字符串。

值得注意的是矾瑰,字典雖然是無(wú)序的砖茸,但是使用了sep.join(seq)方法后,輸出的字符串只輸出鍵而不輸出值殴穴,而且其鍵輸出的順序是按照字典本身的順序來(lái)的凉夯。集合則遵循無(wú)序的原則货葬。

s = "abcde"  # seq為字符串時(shí)
l = ['a', 'b', 'c', 'd', 'e']  # seq為列表時(shí)
d = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
S = {'a', 'b', 'c', 'd', 'e'}
i = ''  # sep為空
j = "-" # sep不為空
print("sep為空時(shí):字符串轉(zhuǎn)化為{},列表轉(zhuǎn)化為{}劲够。".format(i.join(s), i.join(l)))
print("sep不為空時(shí):字符串轉(zhuǎn)化為{}震桶,列表轉(zhuǎn)化為{}。".format(j.join(s), j.join(l)))
print("sep為空時(shí):字典轉(zhuǎn)化為{}征绎,集合轉(zhuǎn)化為{}蹲姐。".format(i.join(d), i.join(S)))
print("sep不為空時(shí):字典轉(zhuǎn)化為{},集合轉(zhuǎn)化為{}人柿。".format(j.join(d), j.join(S)))

<<<
sep為空時(shí):字符串轉(zhuǎn)化為abcde柴墩,列表轉(zhuǎn)化為abcde。
sep不為空時(shí):字符串轉(zhuǎn)化為a-b-c-d-e凫岖,列表轉(zhuǎn)化為a-b-c-d-e江咳。
sep為空時(shí):字典轉(zhuǎn)化為abcde,集合轉(zhuǎn)化為ceabd哥放。
sep不為空時(shí):字典轉(zhuǎn)化為a-b-c-d-e歼指,集合轉(zhuǎn)化為c-e-a-b-d。
<<<

上述字符串的諸多方法中甥雕,str.split(sep=None, num=-1)sep.join(seq)兩個(gè)可能是比較重要且容易弄混的东臀。它們的重要性在于它們能夠使得字符串和列表(后面要學(xué)的一種重要數(shù)據(jù)類(lèi)型)之間互相轉(zhuǎn)換。請(qǐng)對(duì)它們稍微留意一二犀农,多看看它們?cè)诒疚睦锵鄳?yīng)的例子惰赋。

字符串的索引和切片

字符串還有一種非常重要的操作,也是最常用的操作之一呵哨,那就是切片(slicing)赁濒。

而字符串的切片操作是根據(jù)索引(index)進(jìn)行的,其目的是從字符串提取里面的元素或子串孟害。

索引(indexing)

任意一個(gè)字符串拒炎,除了有其字面上的元素外,其實(shí)還有字面外的隱藏元素挨务,也就是字面元素對(duì)應(yīng)的“編號(hào)”击你。比如s = 'abc','a'不光是s中的元素谎柄,還是s中的第1個(gè)元素丁侄。

Python中字符串有兩套編號(hào):

  • 從左向右的編號(hào),采用非負(fù)整數(shù)編號(hào)朝巫。從0開(kāi)始編號(hào)鸿摇,向右依次加1。對(duì)s = 'abc'而言劈猿,s[0] = 'a'表示s的第1個(gè)元素拙吉,s[1] = 'b'表示s的第2個(gè)元素潮孽,依此類(lèi)推。
  • 從右向左的編號(hào)筷黔,采用負(fù)整數(shù)編號(hào)往史。從-1開(kāi)始,向左依次減1佛舱。對(duì)s = 'abc'而言椎例,s[-1] = 'c'表示s的倒數(shù)第1個(gè)元素,s[-2] = 'b'表示s的
    倒數(shù)第2個(gè)字符名眉,依此類(lèi)推粟矿。
s = 'abc'

s[0]  # s的第1個(gè)元素
Out[10]: 'a'

s[1]
Out[11]: 'b'

s[-1]  # s的倒數(shù)第1個(gè)元素
Out[12]: 'c'

s[-2] 
Out[13]: 'b'
切片(Slicing)

切片語(yǔ)法的原型是s[start:stop:stepSize]凰棉,其中start损拢、stop和stepSize三個(gè)參數(shù)均是可選參數(shù)。

start:切片開(kāi)始的元素的索引(index)撒犀,該索引對(duì)應(yīng)的元素包含在切片后的字符串當(dāng)中福压。
stop:切片結(jié)束的元素的索引(index),該索引對(duì)應(yīng)的元素包含在切片后的字符串當(dāng)中或舞。
stepSize:切片時(shí)的步長(zhǎng)荆姆,默認(rèn)為1。

要正確理解切片的這幾個(gè)函數(shù)映凳。請(qǐng)參考range()函數(shù)中的同樣的參數(shù)胆筒,它們的含義是相通的。range()函數(shù)詳解請(qǐng)移步Python零基礎(chǔ)入門(mén)學(xué)習(xí)02:Python基本數(shù)據(jù)類(lèi)型:數(shù)字類(lèi)型查看最后一部分诈豌。

切片語(yǔ)法的最簡(jiǎn)形式是s[:]仆救,其效果就是s字符串本身,即s[:]=s矫渔。其簡(jiǎn)單形式還有s[::]彤蔽,效果等同于s[:]。還有s[start: : ]庙洼、s[:stop:]顿痪、s[: :stepSize]等形式。

'abc'[1:3]油够,表示從index=1的元素開(kāi)始獲取蚁袭,直到取到index=3的元素,但不獲取index=3的元素石咬。這里是切片的幾個(gè)例子:

s = 'abc'

s[1:3]
Out[15]: 'bc'

s[:]
Out[16]: 'abc'

s[1:]
Out[17]: 'bc'

s[1::2]
Out[18]: 'b'

To be continued.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撕阎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碌补,更是在濱河造成了極大的恐慌虏束,老刑警劉巖棉饶,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镇匀,居然都是意外死亡照藻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)汗侵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)幸缕,“玉大人,你說(shuō)我怎么就攤上這事晰韵》⑶牵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵雪猪,是天一觀的道長(zhǎng)栏尚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)只恨,這世上最難降的妖魔是什么译仗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮官觅,結(jié)果婚禮上纵菌,老公的妹妹穿的比我還像新娘。我一直安慰自己休涤,他們只是感情好咱圆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著功氨,像睡著了一般序苏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疑故,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天杠览,我揣著相機(jī)與錄音,去河邊找鬼纵势。 笑死踱阿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钦铁。 我是一名探鬼主播软舌,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼牛曹!你這毒婦竟也來(lái)了佛点?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎超营,沒(méi)想到半個(gè)月后鸳玩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡演闭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年不跟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片米碰。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窝革,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吕座,到底是詐尸還是另有隱情虐译,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布吴趴,位于F島的核電站漆诽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏史侣。R本人自食惡果不足惜拴泌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一魏身、第九天 我趴在偏房一處隱蔽的房頂上張望惊橱。 院中可真熱鬧,春花似錦绰咽、人聲如沸俭嘁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)正林。三九已至,卻和暖如春颤殴,著一層夾襖步出監(jiān)牢的瞬間觅廓,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工涵但, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杈绸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓矮瘟,卻偏偏與公主長(zhǎng)得像瞳脓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澈侠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 第二章 審問(wèn)拖延:被架在審判席上的失敗恐懼癥 怕不足被發(fā)現(xiàn)劫侧、怕打不到要求、怕做的不完美、恐懼失敗烧栋,是拖延癥者常有的...
    吳海燕_YuBin閱讀 508評(píng)論 0 2
  • 如果你再給我遲到的愛(ài)写妥,我就不要了。
    殘愈閱讀 239評(píng)論 0 0
  • 昨天是感恩節(jié)审姓,老師給我們留的感恩節(jié)作業(yè)耳标。放學(xué)回到家以后我和媽媽說(shuō)了,然后媽媽給我講了感恩節(jié)的意義邑跪, 從晚上...
    樊依諾閱讀 167評(píng)論 0 0
  • 姓名:李麗 公司:阜陽(yáng)豹子頭服飾科技有限公司 【日精進(jìn)打卡第223天】 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》背誦1遍 《大學(xué)...
    李麗_76c7閱讀 125評(píng)論 0 0