官术网_书友最值得收藏!

3.3 字符串

字符串是Python中的常見類型,可以通過兩端加單引號(')或雙引號(")來創(chuàng)建它。例如'Hello World'和"Hello Python"均為字符串,此時單引號和雙引號的作用完全相同。若字符串中包含單引號,則兩端用雙引號;若字符串中包含雙引號,則兩端用單引號;其余情況兩者皆可。

字符串屬于不可變類型,因此無法直接修改字符串中的某個或某些成員,但可以通過切片連接等操作生成新的字符串。

3.3.1 基本操作

通過賦值語句即可創(chuàng)建一個字符串類型的序列。如:

    >>> s = ""                ##創(chuàng)建一個空字符串s
    >>> s = "hello world"     ##創(chuàng)建一個內容為"hello world"的字符串s
    >>> type (s)              ##查看s的類型
    <class 'str'>

通過單引號或雙引號可以標記單行字符串,通過三個單引號(或雙引號)可以標記多行內容構成的字符串。如:

    >>> s = '''Python is a programming language.
    I like it.'''
    >>> print (s) 
    Python is a programming language.
    I like it.
    >>> s
    'Python is a programming language.\nI like it.' ##此處的“\n”表示回車換行符

反斜杠(“\”)為轉義字符,通常讀取字符串內容時,若讀到“\”,則繼續(xù)讀取下一個字符,以獲取特殊含義。如“\n”表示換行符,“\\”表示反斜杠字符本身,詳見表3.1所示。

表3.1 轉義字符

通過del語句即可刪除字符串對象。如:

    >>> del s

字符串是不可修改類型,因此不可直接修改字符串中包含的字符元素。若需插入或刪除某元素,則可通過切片連接的方式生成新的字符串再賦值給原對象。如:

    >>> s = "helloworld"
    >>> s = s [:5]  + " " + s [-5:] ##在上例中"hello"和"world"之間增加空格
    >>> s
    'hello world'

字符串進行比較時,若是西文字符,則按其ASCII碼進行比較,若是漢字,則按其機內碼進行比較。如:

    >>> "Python" > "Language"
    True

3.3.2 常用函數(shù)及方法

1.轉換函數(shù)str

通過str函數(shù)可以將其他類型轉換為字符串類型。格式為:

    str (obj) 

其中obj為其他類型對象。通過該函數(shù)可以將其轉換為字符串類型。例:

    >>> n = 123
    >>> str (n) 
    '123'
    >>> b = True
    >>> str (n) 
    'True'
    >>> L =  [1, 2, 3] 
    >>> str (L) 
    '[1, 2, 3]'

2.根據(jù)編碼獲取字符函數(shù)chr

通過chr函數(shù)可以根據(jù)給定的編碼獲取對應的字符。格式為:

    chr (n) 

其中,n為某字符的編碼。通過該函數(shù)可以獲取對應字符。例:

    >>> chr (97) 
    'a'
    >>> chr (98)
    'b'
    >>> chr (65) 
    'A'
    >>> chr (48) 
    '0'

3.獲取字符編碼的函數(shù)ord

通過ord函數(shù)可以獲取對應字符的編碼。格式為:

    ord (ch) 

其中,ch為某字符。通過該函數(shù)可以獲取該字符的編碼。例:

    >>> ord ('a') 
    97
    >>> ord ('b') 
    98
    >>> ord ('A') 
    65
    >>> ord ('0') 
    48

4.根據(jù)分隔符分離字符串方法split

通過split方法,可以將字符串按指定的分隔符進行分離。格式為:

    str.split (splitchar) 

其中,str為待分離的字符串,splitchar為分隔符。例:

    >>> s = "I have a dream"
    >>> s.split (" ") 
    ['I', 'have', 'a', 'dream']
    >>> s = "12, 23, 34, 10"
    >>> s.split (", ") 
    ['12', '23', '34', '10']

該方法與3.2.5小節(jié)所示的join方法互為逆操作。

5.將所有字母轉換為大(小)寫方法upper(lower)

通過upper方法可以返回將所有字母均改為大寫的結果字符串,而源字符串本身不改變。格式為:

    str.upper ( ) 

其中,str為字符串。通過該函數(shù)可以返回其對應的大寫結果字符串,str不改變。例:

    >>> s = "I have a dream"
    >>> s.upper ( ) 
    'I HAVE A DREAM'
    >>> s
    'I have a dream'

通過lower方法可以返回將所有字母均改為小寫的結果字符串,而源字符串本身不改變。格式為:

    str.lower ( ) 

其中,str為字符串。通過該函數(shù)可以返回其對應的小寫結果字符串,str不改變。如上例中s的進行如下操作:

    >>> s.lower ( ) 
    'i have a dream'
    >>> s
    'I have a dream'

對某字符串調用upper方法和lower方法并不會改變源字符串的內容,只是返回處理后的結果字符串。

6.判斷字符串中字母是否均為大(小)寫字母的方法isupper(islower)

通過isupper方法可以返回字符串中字母是否均為大寫。格式為:

    str.isupper ( ) 

其中,str為待判斷的字符串。通過該函數(shù)可以獲知該字符串中的字符是否均為大寫,若均為大寫則返回True,否則返回False。例:

    >>> "HELLO WORLD".isupper ( ) 
    True
    >>> "HAPPY2018".isupper ( ) 
    True
    >>> "Hello World".isupper ( ) 
    False

通過islower方法可以返回字符串中字母是否均為小寫。格式為:

    str.islower ( ) 

其中,str為待判斷的字符串。通過該函數(shù)可以獲知該字符串中的字符是否均為小寫,若均為小寫則返回True,否則返回False。例:

    >>> "I have a dream".islower ( ) 
    False
    >>> "hello".islower ( )
    True
    >>> "happy2018".islower ( ) 
    True

7.判斷字符串是否均由數(shù)字構成的方法isnumeric

通過isnumeric函數(shù)可以判斷出某字符串是否全部由數(shù)字組成。格式為:

    str.isnumeric ( ) 

其中,str為待判斷的字符串。通過該函數(shù)可以獲知該字符串中的各字符是否均為數(shù)字字符。例:

    >>> "2018".isnumeric ( ) 
    True
    >>> "happy2018".isnumeric ( ) 
    False

8.替換方法replace

通過replace方法可以將源字符串中指定字符或子串替換為新的字符或字符串,該方法返回獲得的結果字符串,但源字符串內容不變。格式為:

    str.replace (old, new [, count] ) 

其中str為源字符串,old為待替換的字符或字符串,new為替換后的字符或字符串,count指定替換幾處。如:

    >>> s = "I have a dream"
    >>> s.replace (" ", ", ") 
    'I, have, a, dream'
    >>> s
    'I have a dream'
    >>> s.replace (" ", ", ", 2) 
    'I, have, a dream'
    >>> s
    'I have a dream'

3.3.3 格式化操作

字符串可以通過格式化操作符“%”或format方法進行格式化處理。

1.格式化操作符%

    spec % value

spec為格式字符串,value為待格式化的值。如:

    >>> "%d + %d = %d" % (2, 3, 2 + 3) 
    '2 + 3 = 5'
    >>> "%o" % 10      #將10轉換為八進制
    '12'

其中“%”表示轉換說明符的開始,“d”表示十進制整數(shù),“o”表示八進制整數(shù)。常見格式化轉換類型參見表3.2所示。

表3.2 格式說明符

在這些轉換說明符前還可以加上打印寬度。若指定寬度超過字符串寬度,則默認在左邊用空格補充至指定寬度;若指定寬度小于字符串寬度,則自動突破,保持源字符串不變。例:

    >>> "%10s" % "hello"
    '     hello'
    >>> "%2s" % "hello"
    'hello'

還可以通過“-”改變其對齊方式,即當寬度不夠時,在右側補空格。例:

    >>> "%-10s" % "hello"
    'hello     '

還可以通過“0”指定當寬度不夠時用“0”補充。例:

    >>> "%9d" % 2018
    '     2018'
    >>> "%09d" % 2018
    '000002018'

當類型是浮點數(shù)時,還可以指定其精度。形如“%m.nf”% num,其中m為結果字符串長度,n為小數(shù)點后精確的位數(shù),num為待格式化的數(shù)據(jù)。例:

    >>> "%7.2f" % 3.234
    '   3.23'
    >>> len ("%7.2f" % 3.234) 
    7
    >>> "%-7.2f" % 3.234
    '3.23   '
    >>> "%08.1f" % 3.234
    '000003.2'

若是格式化時需要出現(xiàn)“%”,則需用“%%”來表示“%”,以此與轉換說明符區(qū)分。例:

    >>> float1=0.0367853
    >>> "%f轉換為百分數(shù)并保留兩位小數(shù)的結果為%.2f%%" % (float1, float1 * 100) 
    '0.036785轉換為百分數(shù)并保留兩位小數(shù)的結果為3.68%'

該例中“%f”將float1輸出,“%.2f”表示將float1 * 100的結果保留兩位小數(shù)輸出,“%%”表示輸出“%”。

2.format方法格式化

格式化format函數(shù)的格式為:

    spec.format (value) 

spec為格式字符串,用“{ }”表示待傳入的參數(shù),“{ }”中也可以包含待傳入?yún)?shù)的序號或名稱。value為待格式化的值。如:

    >>> "最高分為{ }, 最低分為{ }".format (100, 43) 
    '最高分為100, 最低分為43'
    >>> "{0} is {1}'s sister.{1} is {0}'s brother.".format ("Anna", "Tom") 
    "Anna is Tom's sister.Tom is Anna's brother."
    >>> "{sis} is {bro}'s sister.{bro} is {sis}'s brother.".format (sis = "Anna", bro = "Tom") 
    "Anna is Tom's sister.Tom is Anna's brother."
主站蜘蛛池模板: 上犹县| 屯留县| 射洪县| 大埔县| 竹山县| 拉萨市| 陈巴尔虎旗| 新宁县| 江孜县| 渭源县| 吉木萨尔县| 广河县| 秦皇岛市| 屏东县| 红桥区| 吉木乃县| 柳江县| 文登市| 邓州市| 江源县| 吕梁市| 库尔勒市| 凤山市| 余江县| 南投市| 黄浦区| 乌兰察布市| 龙南县| 库车县| 绍兴市| 时尚| 丁青县| 金华市| 蓝山县| 肥乡县| 仁怀市| 清流县| 嘉禾县| 达尔| 龙岩市| 通海县|