- Python編程基礎與數(shù)據(jù)分析
- 王娟 華東 羅建平
- 2410字
- 2020-09-11 16:42:31
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."
- MySQL 8從入門到精通(視頻教學版)
- LabVIEW入門與實戰(zhàn)開發(fā)100例
- 小創(chuàng)客玩轉圖形化編程
- JavaFX Essentials
- Learning Apache Kafka(Second Edition)
- C語言程序設計
- Android群英傳
- Mastering Python Design Patterns
- 大數(shù)據(jù)時代的企業(yè)升級之道(全3冊)
- 軟件測試(慕課版)
- Mastering JavaScript Promises
- C/C++程序設計教程
- Implementing DevOps with Ansible 2
- HTML5從入門到精通(第3版)
- UG 12.0數(shù)控編程實例教程