天天看點

[Python學習] 專題三.字元串的基礎知識

        在python中最重要的資料類型包括字元串、清單、元組和字典等.該篇主要講述python的字元串基礎知識.

字元串指一有序的字元序列集合,用單引号、雙引号、三重(單雙均可)引号引起來.如:

        s1='www.csdn.net'   s2="www.csdn.net"   s3='''aaabbb'''

        其中字元串又包括:

        1.轉義字元串

        像c語言中定義了一些字母前加"\"來表示常見的那些不能顯示的ascii字元,python也有轉義字元.如下:

                \\-反斜杠符号   \'-單引号   \"-雙引号  \ a-響鈴   \b-倒退(backspace) 

                \n-換行   \r-回車   \f-換頁   \v-縱向制表符   \t-橫向制表符   \e-轉義

                \000-空   \oyy-八進制數yy代表的字元   \xyy-十進制yy代表的字元

        2.raw字元串

        python中原始字元串(raw strings),r關閉轉義機制.告訴python後面是連串,"\"不當轉義字元處理.例:

        3.unicode字元串

        告訴python是unicode編碼,unicode(統一碼、萬國碼)是一種在計算機上使用的字元編碼.在unicode之前用的都是ascii碼,unicode通過使用一個或者多個位元組來表示一個字元.python裡面預設所有字面上的字元串都用ascii編碼,可以通過在字元串前面加一個'u'字首的方式聲明unicode字元串,這個'u'字首告訴python後面的字元串要編成unicode字元串.例:s=u'aa\nbb'

        4.格式化字元串

        字元串格式化功能使用字元串格式化操作符%(百分号)實作,在%的左側放置一個字元串(格式化字元串),而右側放置希望格式化的值,也可是元組和字典.如果需要在字元串裡包括百分号,使用%%.如果右側是元組的話,則其中每一個元素都會被單獨格式化,每個值都對應一個轉化說明符.例:

        "your age %d,sex %s,record %f"%(28,"male",78.5)

        輸出:'your age 28,sex male,record 78.500000'

        它有點類似于c語言的printf("%d",x),其中百分号%相當于c語言的逗号.其中字元串格式化轉換類型如下:

                d,i  帶符号的十進制整數

                 o   不帶符号的八進制

                 u   不帶符号的十進制

                 x   不帶符号的十六進制(小寫)

                 x   不帶符号的十六進制(大寫)

               e,e  科學計數法表示的浮點數(小寫,大寫)

               f,f   十進制浮點數

                 c   單字元

                 r    字元串(使用repr轉換的任意python)

                 s   字元串(使用str轉換的任意python)

              g,g  指數大于4或小于精度值和e相同,否則和f相同

        字元串的基礎操作包括分割,索引,乘法,判斷成員資格,求長度等.

        1.+連接配接操作

        如:s1='csdn' s2='eastmount' s3=s1+s2

             print s1,s2 => 輸出:csdn eastmount

             print s3 => 輸出:csdneastmount

        2.*重複操作

        如:s1='abc'*5

             print s1 => 輸出:abcabcabcabcabc

        3.索引s[index]

        python的索引格式string_name[index],可以通路字元串裡面的字元成員.

        4.切片s[i:j]

        python中切片的基本格式是s[i:j:step],其中step表示切片的方向,起點不寫從0開始,終點不寫切到最後.如:

                s='abcdefghijk'

                sub=s[3:8]

                print sub => 輸出defgh_

                                             3      78 (起點是3 終點8不取)

        其中當step=-1時表示反方向切片.如:

                sub=s[-1:-4:-1]

                print sub => 輸出kji

         因為最後一個"-1"表示從反方向切片,s[9]='j' s[-2]='j',正方向第一個'a'索引下标值為0,最後一個'k'索引下标值為-1.故'j'為-2,而sub[-1:-4:-1]表示從k(-1位置)切到h(-4位置,但不取該值).故結果為"kji".

         如果想完成字元串逆序,s='www.baidu.com',則可s1=[-1::-1]即可.起點為m(-1),無終點表示切到最後.

         5.字段寬度和精度

         前面講述的format()函數中涉及到該知識,如'%6.2f'%12.345678 輸出"口12.35"其中6表示字段寬度,2表示精度,故補一個空格,同時采用四舍五入的方法結果輸出12.35.

         同時,零(0)可表示數字将會用0填充,減号(-)用來實作左對齊數值,空白(" ")意味着正數前加上空格,在正負數對其時非常有用,加号表示不管正數還是負數都辨別出符号,對齊時也有用.例:

        字元串從string子產品中"繼承"了很多方法,下面講解一些常用的方法:

        find()

        在一個較長的字元串中查找子字元串,它傳回子串所在位置的最左端索引,如果沒有找到則傳回-1.其格式為"s.find(sub [,start [,end]]) -> int",其中該方法可接受可選的起始點和結束點參數.而rfind()從右往左方向查找.

        join()

       其格式為"s.join(iterable) -> string",含義為"return a string which is the concatenation of the strings in the iterable. the separator between elements is s."即用來在隊列中添加元素,但隊列中元素必須是字元串.它是split方法的逆方法.

        split()

        字元串分割函數,格式為"s.split([sep [,maxsplit]]) -> list of strings",将字元串分割成序列,如果不提供分割符,程式将會把所有空格作為分隔符.

        strip()

        去掉開頭和結尾的空格鍵(兩側且不包含内部),s.strip([chars])可以去除指定字元.而函數lstrip()去除字元串最開始的所有空格,rstrip()去除字元串最尾部的所有空格.

        replace()

        該方法傳回某字元串的所有比對項均被替換後得到字元串,如文字處理程式中"查找并替換"功能.

        translate()

        該方法和replace一樣,可以替換字元串中某部分,但與前者的差別是translate隻處理單個字元,它的優勢在于可以同時替換多個,有時候效率比replace高.

        如:s='eastmount' s1=s.replace('e','e') => 替換後'eastmount'

        字元串判斷方法

        isalnum()判斷是否都是有效字元(字母+數字),如判斷密碼帳号,輸出ture\false.

        isalpha()判斷是否是字母

        isdigit()判斷是否是數字

        islower()判斷是否全是小寫

        isupper()判斷是否全是大寫

        isspace()判斷是否是空格(' ')

        lower()

        該方法傳回字元串的小寫字母版,在判斷使用者名不區分大小寫時使用.upper()轉換為大寫,title()函數将字元串轉換為标題——所有單詞的首字母大寫,而其他字母小寫,但是它使用的單詞劃分方法可能會得到不自然的結果.

       ps:我主要是通過《python基礎教程》和"51cto學院 智普教育的python視訊"學習.是以文中引用了很多視訊中的知識、書籍知識和自己的知識,感謝那些作者和老師,希望文章對大家有所幫助,才開始學習python知識,如果文章中有錯誤或不足之處,還請海涵,也希望大家提出意見與君共勉.勿噴~