python 字符串詳解

python 字符串

介紹字符串相關(guān)的:比較,截取,替換,長(zhǎng)度,連接,反轉(zhuǎn),編碼,格式化,查找,復(fù)制,大小寫(xiě),分割等操作

什么是字符串

字符串或串(String)是由數(shù)字恨锚、字母办桨、下劃線組成的一串字符汰蓉。一般記為 s=“a1a2···an”(n>=0)。它是編程語(yǔ)言中表示文本的數(shù)據(jù)類型乞封。 通常以串的整體作為操作對(duì)象,如:在串中查找某個(gè)子串墓卦、求取一個(gè)子串、在串的某個(gè)位置上插入一個(gè)子串以及刪除一個(gè)子串等惹资。兩個(gè)字符串相等的充要條件是:長(zhǎng)度相等福铅,并且各個(gè)對(duì)應(yīng)位置上的字符都相等汛兜。

python 字符串相關(guān)特性

1 屬于python基本數(shù)據(jù)類型和結(jié)構(gòu)的一種。2 本身是不可變的數(shù)據(jù)類型喉脖。 3 有很多內(nèi)置的方法

字符串連接

+直接連接字符串,當(dāng)字符比較多的時(shí)候层皱,效率是比較低的。

a = ['a','b','c','d']
content = ''
for i in a:
   content = content + i 
print content

說(shuō)下為什么效率會(huì)低呢拳恋?
原因:在循環(huán)連接字符串的時(shí)候谬运,他每次連接一次轰驳,就要重新開(kāi)辟空間蠕趁,然后把字符串連接起來(lái)袋狞,再放入新的空間,再一次循環(huán)贬循,又要開(kāi)辟新的空間咸包,把字符串連接起來(lái)放入新的空間,如此反復(fù)甘有,內(nèi)存操作比較頻繁诉儒,每次都要計(jì)算內(nèi)存空間,然后開(kāi)辟內(nèi)存空間亏掀,再釋放內(nèi)存空間忱反,效率非常低,你也許操作比較少的數(shù)據(jù)的時(shí)候看不出來(lái)滤愕,感覺(jué)影響不大温算,但是你碰到操作數(shù)據(jù)量比較多的時(shí)候,這個(gè)方法就要退休了间影。

除了+ 還有兩種方法可以拼接字符串注竿。

方法1: 用字符串的join方法

a = ['a','b','c','d']
content = ''
content = ''.join(a)
print content

方法2: 用字符串的替換占位符替換
想要了解更多,請(qǐng)看python字符串連接

a = ['a','b','c','d']
content = ''
content = '%s%s%s%s' % tuple(a)
print content

字符串截取

我們可以通過(guò)索引來(lái)提取想要獲取的字符,可以把python的字符串也做為字符串的列表就更好理解

python的字串列表有2種取值順序

  1. 是從左到右索引默認(rèn)0開(kāi)始的魂贬,最大范圍是字符串長(zhǎng)度少1
    s = 'ilovepython'
    s[0]的結(jié)果是i

  2. 是從右到左索引默認(rèn)-1開(kāi)始的巩割,最大范圍是字符串開(kāi)頭
    s = 'ilovepython'
    s[-1]的結(jié)果是n

上面這個(gè)是取得一個(gè)字符,如果你的實(shí)際要取得一段子串的話付燥,可以用到變量[頭下標(biāo):尾下標(biāo)]宣谈,就可以截取相應(yīng)的字符串,其中下標(biāo)是從0開(kāi)始算起键科,可以是正數(shù)或負(fù)數(shù)闻丑,下標(biāo)可以為空表示取到頭或尾漩怎。

比如
s = 'ilovepython'
s[1:5]的結(jié)果是love
當(dāng)使用以冒號(hào)分隔的字符串,python返回一個(gè)新的對(duì)象嗦嗡,結(jié)果包含了以這對(duì)偏移標(biāo)識(shí)的連續(xù)的內(nèi)容勋锤,左邊的開(kāi)始是包含了下邊界,比如
上面的結(jié)果包含了s[1]的值l侥祭,而取到的最大范圍不包括上邊界叁执,就是s[5]的值p

字符串替換

字符串替換可以用內(nèi)置的方法和正則表達(dá)式完成。
1用字符串本身的replace方法:

2用正則表達(dá)式來(lái)完成替換:

想要了解更多,請(qǐng)看python 字符串替換

字符串比較

cmp方法比較兩個(gè)對(duì)象卑硫,并根據(jù)結(jié)果返回一個(gè)整數(shù)徒恋。cmp(x,y)如果X< Y,返回值是負(fù)數(shù) 如果X>Y 返回的值為正數(shù)蚕断。

字符串相加

我們通過(guò)操作符號(hào)+來(lái)進(jìn)行字符串的相加欢伏,不過(guò)建議還是用其他的方式來(lái)進(jìn)行字符串的拼接,這樣效率高點(diǎn)亿乳。

原因:在循環(huán)連接字符串的時(shí)候硝拧,他每次連接一次,就要重新開(kāi)辟空間葛假,然后把字符串連接起來(lái)障陶,再放入新的空間,再一次循環(huán)聊训,又要開(kāi)辟新的空間抱究,把字符串連接起來(lái)放入新的空間,如此反復(fù)带斑,內(nèi)存操作比較頻繁鼓寺,每次都要計(jì)算內(nèi)存空間锰瘸,然后開(kāi)辟內(nèi)存空間勾缭,再釋放內(nèi)存空間,效率非常低立哑。

字符串查找

python 字符串查找有4個(gè)方法挂滓,1 find,2 index方法苦银,3 rfind方法,4 rindex方法。

1 find()方法:

2 index()方法:

python 的index方法是在字符串里查找子串第一次出現(xiàn)的位置赶站,類似字符串的find方法幔虏,不過(guò)比f(wàn)ind方法更好的是,如果查找不到子串贝椿,會(huì)拋出異常想括,而不是返回-1

字符串分割

字符串分割,可以用split,rsplit方法团秽,通過(guò)相應(yīng)的規(guī)則來(lái)切割成生成列表對(duì)象

字符串翻轉(zhuǎn)

通過(guò)步進(jìn)反轉(zhuǎn)[::-1]

字符串編碼

通過(guò)字符串的decode和encode方法

1 encode([encoding,[errors]])

其中encoding可以有多種值主胧,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持叭首。errors默認(rèn)值為"strict",意思是UnicodeError踪栋”焊瘢可能的值還有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通過(guò)codecs.register_error注冊(cè)的值。

S.decode([encoding,[errors]]) 下面是字符串編碼應(yīng)用:

字符串追加和拼接

通過(guò)字符串的占位符來(lái)進(jìn)行字符串的拼接

字符串復(fù)制

通過(guò)變量來(lái)進(jìn)行賦值

字符串長(zhǎng)度

通過(guò)內(nèi)置方法len()來(lái)計(jì)算字符串的長(zhǎng)度夷都,注意這個(gè)計(jì)算的是字符的長(zhǎng)度眷唉。

字符串大小寫(xiě)

通過(guò)下面的upper(),lower()等方法來(lái)轉(zhuǎn)換大小寫(xiě)

S.upper()#S中的字母大寫(xiě)
S.lower() #S中的字母小寫(xiě)
S.capitalize() #首字母大寫(xiě)
S.istitle() #S是否是首字母大寫(xiě)的
S.isupper() #S中的字母是否便是大寫(xiě)
S.islower() #S中的字母是否全是小寫(xiě)

字符串去空格

通過(guò)strip(),lstrip(),rstrip()方法去除字符串的空格

S.strip()去掉字符串的左右空格
S.lstrip()去掉字符串的左邊空格
S.rstrip()去掉字符串的右邊空格

字符串其他方法

字符串相關(guān)的其他方法:count(),join()方法等。

S.center(width, [fillchar]) #中間對(duì)齊
S.count(substr, [start, [end]]) #計(jì)算substr在S中出現(xiàn)的次數(shù)
S.expandtabs([tabsize]) #把S中的tab字符替換沒(méi)空格囤官,每個(gè)tab替換為tabsize個(gè)空格冬阳,默認(rèn)是8個(gè)
S.isalnum() #是否全是字母和數(shù)字,并至少有一個(gè)字符
S.isalpha() #是否全是字母党饮,并至少有一個(gè)字符
S.isspace() #是否全是空白字符肝陪,并至少有一個(gè)字符
S.join()#S中的join,把列表生成一個(gè)字符串對(duì)象
S.ljust(width,[fillchar]) #輸出width個(gè)字符刑顺,S左對(duì)齊氯窍,不足部分用fillchar填充,默認(rèn)的為空格蹲堂。
S.rjust(width,[fillchar]) #右對(duì)齊
S.splitlines([keepends]) #把S按照行分割符分為一個(gè)list狼讨,keepends是一個(gè)bool值,如果為真每行后而會(huì)保留行分割符柒竞。
S.swapcase() #大小寫(xiě)互換

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末政供,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子朽基,更是在濱河造成了極大的恐慌布隔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踩晶,死亡現(xiàn)場(chǎng)離奇詭異执泰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)渡蜻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)术吝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人茸苇,你說(shuō)我怎么就攤上這事排苍。” “怎么了学密?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵淘衙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我腻暮,道長(zhǎng)彤守,這世上最難降的妖魔是什么毯侦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮具垫,結(jié)果婚禮上侈离,老公的妹妹穿的比我還像新娘。我一直安慰自己筝蚕,他們只是感情好卦碾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著起宽,像睡著了一般洲胖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坯沪,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天绿映,我揣著相機(jī)與錄音,去河邊找鬼屏箍。 笑死绘梦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赴魁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼钝诚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颖御!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起凝颇,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤潘拱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拧略,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芦岂,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年垫蛆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了禽最。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袱饭,死狀恐怖川无,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虑乖,我是刑警寧澤懦趋,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站疹味,受9級(jí)特大地震影響仅叫,放射性物質(zhì)發(fā)生泄漏帜篇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一诫咱、第九天 我趴在偏房一處隱蔽的房頂上張望坠狡。 院中可真熱鬧,春花似錦遂跟、人聲如沸逃沿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凯亮。三九已至,卻和暖如春哄尔,著一層夾襖步出監(jiān)牢的瞬間假消,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工岭接, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留富拗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓鸣戴,卻偏偏與公主長(zhǎng)得像啃沪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窄锅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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