序列類型-字符串操作

序列類型共同的運(yùn)算及函數(shù).png

字符串是一個(gè)任意Unicode字符序列析桥,包括中文等司草。可以用三種定界符:?jiǎn)我?hào)泡仗、雙引號(hào)埋虹、三引號(hào),但是字符串的首末都得用一樣的定界符娩怎,如:″ABout″搔课,′123′。三引號(hào)用于表示跨行的字符串截亦,如程序的跨行注釋爬泥。
要訪問字符串中單獨(dú)的某個(gè)字符,用這個(gè)字符在字符串中的位置(索引)崩瓤,即這個(gè)字符離首字符的偏移量袍啡,注意首字符的位置為0,運(yùn)算采用方括號(hào)[]却桶,方括號(hào)中表達(dá)式即為索引境输,也稱為下標(biāo)。字符串的索引有兩種方式:一種是從0開始颖系,向右依次遞增序號(hào)嗅剖,另一種是從-1開始,向左依次遞減序號(hào)嘁扼,如圖1所示信粮。因此訪問字符′A′的可用反向遞減的索引方式:ft[-5]


字符串索引方式

如果要訪問字符串中的一個(gè)子串,則可以采用區(qū)間訪問的方式趁啸,也可稱為分片操作:[M:N]强缘,其中M和N為字符串的索引號(hào)督惰,表示從M到N(不包括N)的子串,可以采用混合的索引方式欺旧,即一個(gè)使用遞增的索引順序姑丑,另一個(gè)采用遞減的索引順序。如果缺省M或N辞友,則分別默認(rèn)為字符串的開始或結(jié)尾的索引號(hào)。
字符串(str)是一個(gè)類震肮,封裝了一系列的方法來處理更為復(fù)雜的文本處理任務(wù)的函數(shù)称龙,這些封裝在類中的函數(shù)稱為方法,所以說方法就是和特定對(duì)象相關(guān)聯(lián)的函數(shù)戳晌。對(duì)于方法的調(diào)用方式是:a.b()鲫尊,表示調(diào)用對(duì)象a的方法b()。每個(gè)字符串均是一個(gè)對(duì)象沦偎,表2列出了部分常用的字符串方法疫向。


字符串方法

*注:字符串可以有列表的下標(biāo)訪問str[0],以及切片str[1:3]豪嚎、反轉(zhuǎn)str[::-1]

字符串的拼接

Python使用+來合并兩個(gè)字符串搔驼,這種合并字符串的方法叫做拼接。其基本語(yǔ)法如下:

result_string = source_string1 + source_string2

其中侈询,

  • source_string1為待合并的第一個(gè)字符串
  • source_string2為待合并的第二個(gè)字符串
  • result_string為合并后的字符串
# coding=utf-8
# 將姓氏和名字分別保存在兩個(gè)變量中
first_name = 'Zhang'
last_name = 'san'
# 將姓氏和名字拼接舌涨,將結(jié)果存儲(chǔ)在full_name變量中
full_name = first_name + " " + last_name
print(full_name)

輸出結(jié)果: Zhang san

[字符串長(zhǎng)度獲取]、 [大小寫轉(zhuǎn)換]扔字、[去除字符串首尾空格]

Python標(biāo)準(zhǔn)庫(kù)提供了一系列關(guān)于字符串處理的函數(shù)囊嘉。本關(guān)的小目標(biāo)是讓讀者學(xué)習(xí)并掌握Python常用字符串方法中的len()lower()strip()函數(shù)的用法并完成相應(yīng)字符串處理任務(wù)革为。

求字符串的長(zhǎng)度

Python提供了len()函數(shù)來計(jì)算并返回字符串的長(zhǎng)度扭粱,即字符串中單個(gè)元素的個(gè)數(shù)。其基本語(yǔ)法如下:

length = len(target_string)

大小寫轉(zhuǎn)換

Python提供了upper()lower()方法來對(duì)字符串進(jìn)行大小寫轉(zhuǎn)換震檩。其中琢蛤,upper()會(huì)將字符串中的所有字符都轉(zhuǎn)換為大寫,lower()則將所有字符轉(zhuǎn)換為小寫恳蹲。

除此之外虐块,Python還貼心的提供了title()方法將字符串所有單詞的首字母變成大寫,而其他字母依然小寫

# 將源字符串轉(zhuǎn)換為大寫并存入upper_string變量
upper_string = source_string.upper()
# 將源字符串轉(zhuǎn)換為小寫并存入lower_string變量
lower_string = source_string.lower()
# 將源字符串每個(gè)詞首字母轉(zhuǎn)換為大寫并存入title_string變量
title_string = source_string.title()

  • 注意: 由上述打印結(jié)果可以看出嘉蕾,上述方法的調(diào)用并不會(huì)對(duì)原始的say_hello字符串產(chǎn)生影響贺奠,轉(zhuǎn)換后的字符串會(huì)存入新的變量中.

去除字符串首尾空格

蟒了提供strip()方法,可以去除字符串兩側(cè)(不包含內(nèi)部)全部的空格;使用該方法错忱,也可以通過指定參數(shù)儡率,去除兩側(cè)指定的特定字符

  • 注意:在指定參數(shù)時(shí)挂据,如果參數(shù)是多個(gè)字符,則該方法會(huì)將多個(gè)字符逐個(gè)去比對(duì)進(jìn)行刪除(區(qū)分大小寫)儿普,直到首尾兩側(cè)沒有匹配的字符為止但是崎逃,該方法對(duì)字符串中間的字符沒有影響。

其基本語(yǔ)法如下:

strip_string1 = source_string.strip()
string_strip2 = source_string.strip(target_char)

其中眉孩,

  • source_string:待處理的源字符串
  • strip_string1和strip_string2:處理后的字符串
  • target_char:需要從源字符串首尾去除的特定字符
    具體使用示例如下:
# coding = utf-8
# 創(chuàng)建一個(gè)字符串hello_world
hello_world = '  **The world ** is big!*    '
# 利用strip()方法處理hello_world字符串
blank_hello_world = hello_world.strip()
char_hello_world = hello_world.strip('TH *')
# 打印輸出轉(zhuǎn)換后的字符串
print(blank_hello_world)
print(char_hello_world)

輸出結(jié)果:
**The world ** is big!*
he world ** is big!
輸出結(jié)果分析:

  • 從第一行打印結(jié)果可以看到个绍,strip()方法去除了源字符串首尾的所有空格,但是并沒有去除字符串中間的空格
  • 從第二行打印結(jié)構(gòu)可以看出浪汪,strip()方法將源字符串首尾所有空格巴柿,*以及字符T。去掉了死遭。而字符串源中頭部的h因?yàn)榈挠⑽男懖]有去除

字符串查找

Python中提供了內(nèi)置的字符串查找方法find()广恢,利用該方法可以在一個(gè)較長(zhǎng)的字符串中查找子字符串。如果該字符串中有一個(gè)或者多個(gè)子字符串呀潭,則該方法返回第一個(gè)子串所在位置的最左端索引;若沒有找到符合條件的子串钉迷,則返回-1。
find()方法的基本使用語(yǔ)法如下:

source_string.find(sub_string)

其中钠署,

  • source_string:源字符串
  • sub_string:待查的目標(biāo)子字符串
  • find:字符串查找方法的語(yǔ)法關(guān)鍵字
    例如允蜈,在一個(gè)字符串中查找兩個(gè)單詞的位置:
# coding=utf-8
# 創(chuàng)建一個(gè)字符串
source_string = 'The past is gone and static'
# 查看"past"在source_string字符串中的位置
print(source_string.find('past'))
# 查看"love"在source_string字符串中的位置
print(source_string.find('love'))

輸出結(jié)果:
4
-1

index()方法:

python 的index方法是在字符串里查找子串第一次出現(xiàn)的位置洪唐,類似字符串的find方法跃捣,不過比find方法更好的是泽论,如果查找不到子串,會(huì)拋出異常该面,而不是返回-1

info = 'abca'
print info.index('a')
print info.index('33')

rfindrindex方法用法和上面一樣夭苗,只是從字符串的末尾開始查找。

字符串替換

蟒蛇了提供replace()方法隔缀,用以替換給定字符串中的子串题造,其基本使用語(yǔ)法如下:

source_string.replace(old_string, new_string)

其中,

  • source_string:待處理的源字符串
  • old_string:被替換的舊字符串
  • new_string:替換的新字符串
  • replace:字符串替換方法的語(yǔ)法關(guān)鍵詞
    例如猾瘸,如下在字符串中用small子串替換big子串
# coding = utf-8
# 創(chuàng)建一個(gè)字符串circle
source_string = 'The world is big'
# 利用replace()方法用子串"small"代替子串"big"
print(source_string.replace('big','small'))

輸出結(jié)果:
The world is small

字符串分割

蟒了提供split()方法實(shí)現(xiàn)字符串分割界赔。該方法根據(jù)提供的分隔符將一個(gè)字符串分割為字符列表,如果不提供分隔符則程序會(huì)默認(rèn)把空格(制表牵触,換行等)作為分隔符淮悼。其基本使用語(yǔ)法如下:

source_string.split(separator)

其中,

  • source_string:待處理的源字符串
  • separator:分隔符
  • split:字符串分割方法的關(guān)鍵詞
    例如揽思,用+袜腥,/還有空格作為分隔符分割字符串。
# coding = utf-8
# 待處理字符串source_string
source_string = '1+2+3+4+5'
# 利用split()方法钉汗,按照`+`和`/`對(duì)source_string字符串進(jìn)行分割
print(source_string.split('+'))
print(source_string.split('/'))

輸出結(jié)果:
['1', '2', '3', '4', '5']
['1+2+3+4+5']

count()方法

Python count()方法用于統(tǒng)計(jì)字符串里某個(gè)字符出現(xiàn)的次數(shù)羹令±鹇牛可選參數(shù)為在字符串搜索的開始與結(jié)束位置。
語(yǔ)法
count()方法語(yǔ)法:

str.count(sub, start= 0,end=len(string))

參數(shù)

  • sub -- 搜索的子字符串
  • start -- 字符串開始搜索的位置福侈。默認(rèn)為第一個(gè)字符,第一個(gè)字符索引值為0酒来。
  • end -- 字符串中結(jié)束搜索的位置。字符中第一個(gè)字符的索引為 0肪凛。默認(rèn)為字符串的最后一個(gè)位置堰汉。

返回值
該方法返回子字符串在字符串中出現(xiàn)的次數(shù)。
實(shí)例
以下實(shí)例展示了count()方法的實(shí)例:

實(shí)例(Python 2.0+)
#!/usr/bin/python
 
str = "this is string example....wow!!!";
 
sub = "I";
print "str.count(sub, 4, 40) : ", str.count(sub, 4, 40)
sub = "wow";
print "str.count(sub) : ", str.count(sub)

以上實(shí)例輸出結(jié)果如下:
str.count(sub, 4, 40) : 2
str.count(sub) : 1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伟墙,一起剝皮案震驚了整個(gè)濱河市衡奥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌远荠,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件失息,死亡現(xiàn)場(chǎng)離奇詭異譬淳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盹兢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門邻梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绎秒,你說我怎么就攤上這事浦妄。” “怎么了见芹?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵剂娄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我玄呛,道長(zhǎng)阅懦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任徘铝,我火速辦了婚禮耳胎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惕它。我一直安慰自己怕午,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布淹魄。 她就那樣靜靜地躺著郁惜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揭北。 梳的紋絲不亂的頭發(fā)上扳炬,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天吏颖,我揣著相機(jī)與錄音,去河邊找鬼恨樟。 笑死半醉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的劝术。 我是一名探鬼主播缩多,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼养晋!你這毒婦竟也來了衬吆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤绳泉,失蹤者是張志新(化名)和其女友劉穎逊抡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體零酪,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冒嫡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了四苇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孝凌。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖月腋,靈堂內(nèi)的尸體忽然破棺而出蟀架,到底是詐尸還是另有隱情,我是刑警寧澤榆骚,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布片拍,位于F島的核電站,受9級(jí)特大地震影響寨躁,放射性物質(zhì)發(fā)生泄漏穆碎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一职恳、第九天 我趴在偏房一處隱蔽的房頂上張望所禀。 院中可真熱鬧,春花似錦放钦、人聲如沸色徘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)褂策。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斤寂,已是汗流浹背耿焊。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遍搞,地道東北人罗侯。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像溪猿,于是被迫代替她去往敵國(guó)和親钩杰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355