天天看點

python 字元串(2)

字元串複制

字元串複制的方法:

>>> a = "I like python and can teach you to learn it."
>>> print a
I like python and can teach you to learn it.
>>> b = a
>>> print b
I like python and can teach you to learn it.
>>> print a
I like python and can teach you to learn it.
           

複制非常簡單,類似與指派一樣。可以了解為那個字元串本來跟a連接配接着,通過b=a,a從自己手裡分處一股繩子給了b,這樣兩者都可以指向那個字元串了。

字元串長度

方法:

>>> a="hello"
>>> len(a)
5
           

使用的是一個函數len(object)。得到的結果就是該字元串長度。

>>> m = len(a)  #把結果傳回後指派給一個變量
>>> m
5
>>> type(m)     #這個傳回值(變量)是一個整數型
<type 'int'>
           

字元大小寫的轉換

在python中有下面一堆内建函數,用來實作各種類型的大小寫轉化

  • S.upper() #S中的字母大寫
  • S.lower() #S中的字母小寫
  • S.capitalize() #首字母大寫
  • S.istitle() #檢測字元串中所有的單詞拼寫首字母是否為大寫,且其他字母為小寫。
  • S.isupper() #S中的字母是否全是大寫
  • S.islower() #S中的字母是否全是小寫

    看例子:

>>> a = "hiekay,python"
>>> a.upper()       #将小寫字母完全變成大寫字母
'HIEKAY,PYTHON'
>>> a               #原資料對象并沒有改變
'hiekay,python'
>>> b = a.upper()
>>> b
'HIEKAY,PYTHON'
>>> c = b.lower()   #将所有的小寫字母變成大寫字母
>>> c
'hiekay,python'

>>> a
'hiekay,python'
>>> a.capitalize()  #把字元串的第一個字母變成大寫
'Hiekay,python'
>>> a               #原資料對象沒有改變
'hiekay,python'
>>> b = a.capitalize() #建立立了一個
>>> b
'Hiekay,python'

>>> a = "hiekay,github"    #這裡的問題就是網友白羽毛指出的,非常感謝他。
>>> a.istitle()
False
>>> a = "HIEAKY"        #當全是大寫的時候,傳回False
>>> a.istitle()
False
>>> a = "hiekaY"
>>> a.istitle()
False
>>> a = "Hiekay,github"  #如果這樣,也傳回False
>>> a.istitle()
False
>>> a = "Hiekay"        #這樣是True
>>> a.istitle()
True
>>> a = 'Hiekay,Github' #這樣也是True
>>> a.istitle()
True

>>> a = "Hiekay"
>>> a.isupper()
False
>>> a.upper().isupper()
True
>>> a.islower()
False
>>> a.lower().islower()
True
>>> a = "This is a Book"
>>> a.istitle()
False
>>> b = a.title()     #這樣就把所有單詞的第一個字母轉化為大寫
>>> b
'This Is A Book'
>>> a.istitle()       #判斷每個單詞的第一個字母是否為大寫
False 
>>> b.istitle()
True
           

操作字元串中的字元

在python中按照這樣的順序對字元串進行編号:從左邊第一個開始是0号,向下依次按照整數增加,為1、2...,直到最後一個,在這個過程中,所有字元,包括空格,都進行變好。例如:

Hello,wor ld

對于這個字元串,從左向右的變好依次是:

|0|1|2|3|4|5|6|7|8|9|10|11|

|H|e|l|l|o|,|w|o|r| |l |d |

看代碼:

>>> a = "Hello,wor ld"
>>> len(a)      #字元串的長度是12,說明公有12個字元,最後一個字元編号是11
12
>>> a[0]
'H'
>>> a[3]
'l'
>>> a[9]
' '
>>> a[11]
'd'
>>> a[5]
','
           

特别說明,編号是從左邊開始,第一個是0。

能不能從右邊開始編号呢?可以。這麼人見人愛的python難道這點小要求都不滿足嗎?

>>> a[-1]
'd'
>>> a[11]
'd'
>>> a[-12]
'H'
>>> a[-3]
' '
           

看到了嗎?如果從右邊開始,第一個編号是-1,這樣就跟從左邊區分開了。也就是a[-1]和a[11]是指向同一個字元。

字元串截取

比如,從“hello,wor ld”裡面取出“llo”。可以這樣操作

>>> a[2:5]
'llo'
           
  • 注意: 截取a[n,m],其中n<m,得到的字元是從a[n]開始到a[m-1]

    注意:所截取部分的第一個字元(l)對應的編号是(2),從這裡開始;結束的字元是(o),對應編号是(4),但是結束的編号要增加1,不能是4,而是5.這樣截取到的就是上面所要求的了。

特殊的
>>> a[:]    #表示截取全部
'Hello,wor ld'
>>> a[3:]   #表示從a[3]開始,一直到字元串的最後
'lo,wor ld'
>>> a[:4]   #表示從字元串開頭一直到a[4]前結束
'Hell'
           

去掉字元串兩頭的空格

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

    例子:

>>> b=" hello "
>>> b
' hello '
>>> b.strip()
'hello'
>>> b
' hello '
>>> b.lstrip()
'hello '
>>> b.rstrip()
' hello'
           

擴充raw_input()

下面共同做一個練習:輸入使用者名,計算機自動向這個使用者打招呼。代碼如下:

#coding:utf-8

print "please write your name:"
name=raw_input()
print "Hello,%s"%name
           

raw_input()的含義,就是要使用者輸入内容,所輸入的内容是一個字元串。

下一篇: python 函數