手把手教你学Python:一文看懂字符串基本操作
導讀:很多程序員處理文本而不是數字。文本包含字符:字母、數字、標點符號、空格等。字符串是一系列字符。例如,字符串"Hello"是一個包含5個字符的序列。
作者:凱·霍斯特曼(Cay Horstmann),蘭斯·尼塞斯(Rance Necaise)
如需轉載請聯系大數據(ID:hzdashuju)
01 字符串類型
你在輸出語句的介紹中已經見過字符串了,例如
字符串可以保存在變量中
然后就可以在需要的時候像數字值一樣來訪問:
字符串常量表示一個特定的字符串(例如"Hello"),就像數字常量(例如2)表示一個特定的數字一樣。在Python中,字符串常量由包含在一對單引號或雙引號中的字符序列來指定。
因為允許使用兩種界定符,Python可以很容易地在字符串中包含撇號或者引號。
我們使用雙引號來包含字符串,因為這在很多其他編程語言中是一個通用的約定。然而,在交互式Python解釋器環境中總是使用單引號來顯示字符串。
字符串中字符的數量稱作字符串的長度。例如,"Harry"的長度是5。你可以使用Python內置函數len來計算一個字符串的長度:
長度為0的字符串稱作空字符串,它不包含字符,寫作:
或者
02 連接與重復
給定兩個字符串,例如"Harry"和"Morgan",你可以把它們連接成一個字符串,結果中包含兩個字符串中的所有字符,其中第一個字符串中的字符在前,第二個字符串中的字符在后。在Python中,你可以使用+運算符連接兩個字符串。例如:
lastName?=?"Morgan"?
name?=?firstName?+?lastName
結果字符串為
如果你想在名和姓之間使用空格進行分隔該怎么做?沒問題:
這個語句連接了3個字符串:firstName、字符串常量" "和lastName。結果是
如果+運算符的左側或右側的表達式是字符串,那么另一側的表達式也必須是字符串,否則會導致語法錯誤。你不能把字符串和數字連接到一起。
你也可以通過對一個字符串進行多次重復來產生字符串。例如,假設你需要打印一行破折線。不需要指定一個包含50個破折線的字符串常量,你可以使用*運算符來創建一個包含50個"-"字符的字符串。例如,
結果是字符串
任意長度的字符串都可以使用*運算符進行重復。例如,語句
print(message?*?5)?
顯示
與字符串相乘的因子必須是整數值,并且可以出現在*運算符的任意一側,但是習慣上把字符串放在左側而整數因子放在右側。
03 轉換數字和字符串
有時候需要把數字轉換為字符串。例如,假設你需要在字符串尾部追加一個數字。你不能連接字符串和數字:
因為字符串連接只能在兩個字符串之間進行,我們必須首先把數字轉換為字符串。
為了生成數字值的字符串表示,使用函數str。語句
把整數1729轉換為"1729",函數str解決了我們的問題:
name?=?"Agent?"?+?str(id)?
函數str也可以用來把浮點數轉換為字符串。
反過來,為了把包含數字的字符串轉換為數字值,可以使用函數int或float:
price?=?float("17.29")?
當字符串來自于用戶輸入時,這個轉換很重要。
傳遞給函數int或float的字符串只能包含隱含類型的常量。例如,語句
會產生運行時錯誤,因為字母"x"不是浮點數常量的一部分。
前面和后面的空白字符會被忽略:
仍然是1729。
04 字符串與字符
字符串是Unicode字符的序列。你可以使用字符串和位置來訪問單個字符,這個位置稱作字符的索引。
第1個字符的索引是0,第2個的索引是1,以此類推。
通過特殊的下標記號可以訪問單個字符,位置被放置在方括號中。例如,變量name定義如下:
語句
last?=?name[4]
從字符串中提取了兩個不同的字符。第一個語句提取出字符串的第一個字符"H"并存入變量first。第二個語句提取位置4上面的字符,也就是最后一個字符,然后存入變量last。
索引值必須位于字符位置的合法范圍,否則會在運行時拋出下標越界異常。函數len可以用來確定最后一個索引,或者字符串的最后一個字符。
last?=?name[pos]??????#?last被設置為"y"?
下面的程序演示了上面概念的用法,程序使用字符串初始化了兩個變量,一個使用你的名字,另一個使用你認為比較重要的人的,然后輸出首字母。
操作first[0]得到包含first第一個字母的字符串,second[0]獲取第二個名字的首字母。最后,使用字符串"&"連接兩個單字母的字符串得到長度為3的字符串initials(見圖2-4)。
▲圖2-4 創建首字母字符串
#??本程序用來輸出一對首字母
#?
#?設置兩個名字
first?=?"Rodolfo"?
second?=?"Sally"?
#?計算和顯示首字母
initials?=?first[0]?+?"&"?+?second[0]?
print(initials)
字符串運算示例見表2-7。
語句 | 結果 | 說明 |
string = "Py" string = string + "thon" | string被設置位”Python” | 當作用于字符串時,+表示連接。 |
print("Please" + " enter your name: ") | 打印 Please enter your name: | 使用續行符打斷無法在一行內編寫的字符串。 |
team = str(49) + "ers" | team被設置為”49ers” | 因為49是一個整數,必須被轉換位字符串。 |
greeting = "H & S" n = len(greeting) | n被設置為5 | 在統計數量時每個空格都作為一個字符。 |
string = "Sally" ch = string[1] | ch被設置為"a" | 注意,第一個下標是0。 |
last = ? string[len(string) - 1] | last被設置為包含string中最后一個字符的字符串 | 最后一個字符的位置是len(string) ? - 1。 |
▲表2-7 字符串運算
05 字符串方法
在計算機編程中,對象是表示具有特定行為的值的實體。值可以很簡單,像字符串。也可以很復雜,像圖形窗口或數據文件。現在,你需要掌握適用于字符串對象的一小部分內容。
對象的行為通過方法來指定。方法和函數很類似,是執行特定任務的一系列程序指令。但是與函數不同的是,方法只能用于定義好的類型的對象,而函數則是獨立的操作。例如,你可以把upper方法應用于任何字符串,就像
uppercaseName?=?name.upper()???#?把uppercaseName設置為"JOHN?SMITH"
注意,方法名緊跟在對象之后,并且使用一個圓點(.)分隔對象和方法名。
另一個方法lower可以用來返回一個字符串的小寫版本:
至于什么時候需要調用函數(例如len(name))和什么時候調用方法(name.lower()),可能稍微有點武斷。你需要進行簡單的記憶,在打印版或者在線Python參考資料中進行查找。
像函數調用一樣,方法調用也可以有參數。例如,字符串方法replace創建一個新字符串,其中給定子字符串的每次出現都被替換為第二個字符串。下面是該方法具有兩個參數的調用:
注意任何方法的調用都不能修改字符串的值。調用name.upper()之后,變量name的值仍然是"John Smith",該方法的調用返回大寫版本。類似地,replace方法返回替換后的新字符串,不會對原字符串做任何修改。
以下列出本節中介紹的字符串方法:
關于作者: 凱·霍斯特曼(Cay Horstmann) ,圣何塞州立大學計算機科學系教授,Java的倡導者,經常在開發人員會議上發表演講。他是《Java核心技術》的作者,同時也關注Python、Scala、C++等語言,為專業程序員和計算機科學專業學生編寫過數十本圖書。?
蘭斯·尼塞斯(Rance Necaise) 蘭道爾夫-麥肯學院計算機科學系副教授,撰寫了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技術書籍。
本文摘編自《Python程序設計(原書第2版)》,經出版方授權發布。
延伸閱讀《Python程序設計(原書第2版)》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:專為Python初學者打造的入門教材,講解清晰實用,案例豐富有趣。
有話要說?
Q:?你常用哪些字符串操作?
歡迎留言與大家分享
猜你想看??
5G元年,你最該搞懂的技術竟然是……
入門干貨:Python操作Word文件經驗分享
父親節,來認識一下這幾位“爸爸”
想用Python爬小姐姐圖片?那你得先搞定分布式進程
更多精彩??
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT?|?報告?|?讀書?|?書單?|?干貨?
大數據?|?揭秘?|?Python?|?可視化
AI?|?人工智能?|?5G?|?區塊鏈
機器學習?|?深度學習?|?神經網絡
1024?|?段子?|?數學?|?高考
據統計,99%的大咖都完成了這個神操作
??
覺得不錯,請把這篇文章分享給你的朋友
轉載 / 投稿請聯系:baiyu@hzbook.com
更多精彩,請在后臺點擊“歷史文章”查看
點擊閱讀原文,了解更多
總結
以上是生活随笔為你收集整理的手把手教你学Python:一文看懂字符串基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当强人工智能时代来临,哪些人不会失业?
- 下一篇: 微服务治理框架的选择:对比Spring