1. 程式人生 > >python的字串(String)及其常見操作(方法、函式)

python的字串(String)及其常見操作(方法、函式)

字串(string)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    下標與切片
        str[下標],從左向右0→+,從右向左-1→
        str[起始:結束:步長],範圍包首不包尾

>>> str="0123456789"    #定義一個字串,從0到9,共10個元素
>>> str[0]              #取出0號下標的元素
'0'
>>> str[10]             #嘗試取出10號下標的元素
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    str[10]
IndexError: string index out of range
                        #報錯,下標越界,不存在str[10]
>>> str[9]              #下標從左向右數,第一個為0號下標,第N個元素下標為N-1
'9'
>>> str[-1]             #下標從右向左數,第一個為-N號下標,倒數最後一個為-1
'9'
>>> str[-10]
'0'

注意:對字串的所有操作,原始資料(即原字串)未發生變化 !!!

對原字串操作會返回一個操作後的資料, 可以使用變數去接受資料



    常見方法
        查詢
            .find(str),str存在字串中返回下標索引值,不存在返回-1
            .rfind(str),str存在字串中,查詢順序為從右向左,其它與find一樣
            .index(str),存在返回下標索引值,不存在報異常
            .rindex(str),存在返回下標索引值,查詢順序為從右向左,其它與index一樣
            .count(str[,起始,結束]),查詢指定字串中該字元出現的總次數

>>> str='123aaabcdeeff'        #定義一個字串用於測試字串方法的使用
>>> str.find(0)                #嘗試查詢整數0是在於字串中的下標
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    str.find(0)
TypeError: must be str, not int
                               #字串操作,查詢操作物件必須為字串型別,所以元素應用‘’標識
>>> str.find('1')          #查詢字元1在指定字串中首次出現的下標
0                          #返回的下標為0
>>> str.find('a')          #查詢字元a在指定字串中首次出現的下標
3                          #返回的下標為3
>>> str.rfind('a')         #反向查詢(即從末尾向前查詢),字元a首次出現在字串中的下標
5                          #返回的下標為5
>>> str.index('0')         #使用index查詢時,字元不存在時,會報錯
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    str.index('0')
ValueError: substring not found
>>> str.find('0')          #使用find查詢時,不存在返回-1
-1
>>> str.rindex('a')        #使用rindex反向查詢
5
>>> str.count('a')         #使用count查詢指定字元出現的總共次數
3
>>> str.count('f')         
2
>>> str.count('a',0,3)     #使用count時,可以指定範圍,第一個數字指定起始位置,                   
0                          #第二個數字指定 結束範圍,查詢範圍包含起始位,不包含結束位
>>> str.count('a',1,5)
2
>>> str.find('abcde')      #操作物件為字串,傳入引數也是一個字串,並不一定是一個字元
5                          #可以是字母數字以及中文


        替換
            .replace(str1,str2 [,n] ),將字串中所有的str1替換為str2,n可指定最多替換的次數

>>> str='123aaabcdeeff'
>>> str.replace('a','s')            #不指定替換次數,將會全部替換
'123sssbcdeeff'
>>> str.replace('a','s',1)          #指定次數時,僅替換指定次數個,替換順序為從前向後
'123saabcdeeff'
>>> str.replace('a','s',2)
'123ssabcdeeff'


        分割
            .split(str[,n]),以str為分隔符(分割後丟失),將字串分割為多個字串,n可指定最多的分割次數
            .partition(str),已指定字元做為一個部分,分割兩邊,生成三部分的字串
            .splitlines(),按照行進行分割,返回一個包含各行作為元素的列表

>>> str='123123123'                #定義一個字串,用於測試
>>> str.split('2')                 #使用split進行分割
['1', '31', '31', '3']             #分割後指定的分割符消失,生成多個字串的列表
>>> str.partition('2')             #使用partition進行分割
('1', '2', '3123123')              #僅進行一次分割,分割後製定的分割符單獨成為一部分
>>> str='abc\nabc\nabc\nabc'       #定義一個包含行符的字串
>>> print(str)                     #列印輸出測試
abc
abc
abc
abc
>>> str.splitlines()               #使用splitlines進行分割,生成一個列表,每一行資料為一個元素
['abc', 'abc', 'abc', 'abc']


        大小寫格式化
            .capitalize(),將字串第一個首字母大寫(其它都小寫)
            .title(),將字串中所有單詞首字母大寫(其它都小寫)
            .lower()轉換所有大寫字元為小寫
            .upper()轉換所有小寫字元為大寫

>>> str="abcABC defDEF hijHIJ klMN"      #定義一個包含大小寫的字串用於測試
>>> str.capitalize()                     #將字串首字母進行大寫
'Abcabc defdef hijhij klmn'
>>> str.title()                          #將所有單詞首字母進行大寫
'Abcabc Defdef Hijhij Klmn'
>>> str.lower()                          #將字串中所有字母小寫
'abcabc defdef hijhij klmn'
>>> str.upper()                          #將字串中所有字母大寫
'ABCABC DEFDEF HIJHIJ KLMN'
>>> 


        對齊格式化
            .ljust(width)返回一個原字串左對齊,並預設使用空格補充至長度為width的字串
            .rjust(width)返回一個原字串右對齊,並預設使用空格補充至...........
            .center(width) 返回一個原字元居中,並使用空格補充至width長度的新字串

#預設使用空格補充長度,顯示不夠明顯,所以為了突出效果,指定使用了*補充
str1='   abcde  '           
print(str1.ljust(20,'*'))   #左對齊,指定長度為20
str2='   abcde   '
print(str2.rjust(20,'*'))   #右對齊,指定長度為20
str3='   abcde   '
print(str3.center(20,'*'))  #居中對齊,指定長度為20

#執行結果
#   abcde  **********
# *********   abcde   
# ****   abcde   *****


        清除空白字元
            .lstrip(),刪除左側的空白字元
            .rstrip(),刪除末尾的空白字元
            .strip(),刪除兩端的空白字元

>>> str='   abc   '
>>> str.lstrip()        #刪除左側空格
'abc   '
>>> str.rstrip()        #刪除右側空格
'   abc'
>>> str.strip()         #刪除兩側空格
'abc'
>>> 


        檢查
            .startswith(str),檢查字串是否以指定字元開頭,是則返回Turn,否則返回False
            .endswith(str),檢查字串是否以指定字元結尾,是則返回Turn,否則為False
            .isalpha(),檢查字串是否都是字母,是返回Turn,否則返回False
            .isdigit(),檢查字串是否只包含數字,是返回Turn,否則返回False
            .isalnum(),檢查字串是否都是字母或數字,是返回Turn,否則返回False
            .isspace(),檢查字串是否只包含空格,是返回Turn,否則返回False

>>> str0='0123abcd'
>>> str1='12345'
>>> str2='abcdef'
>>> str3='    '
>>> str0.startswith('0')    #檢查是否包含指定字串,是則返回True
True
>>> str0.startswith('6')    #不包含則返回Flace
False
>>> str0.endswith('0')      #檢查是否以指定字串結束,不是返回Flace
False
>>> str0.endswith('d')      #是則返回True
True
>>> str1.isalnum()          #檢測指定字串是否全是字母和數字組成
True
>>> str2.isalpha()          #檢測指定字串是否全為字母
True
>>> str0.isdigit()          #檢測指定字串是否全是數字
False
>>> str3.isspace()          #檢測指定字串是否全為空格
True
>>>