Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

生活中總有幾樣註定的事:死亡、稅單以及須要處理字符串的程序員。 字符串能夠有多種形式。 它們能夠是非結構化的文本,用戶名,產品描述,數據庫列表名,或者其它任何咱們使用語言描述的內容。程序員

既然字符串數據幾乎無處不在,那麼掌握所使用的工具如何進行字符串處理是很是重要的。 幸運的是,與其它語言甚至舊版本的Python語言相比,Python語言對字符串的操做很是簡單。數據庫

您將從本文中學習一些最基本的字符串操做:拆分,鏈接和拼接。 您不只將學習如何使用這些工具,並且還將深刻了解它們是如何工做。數組


字符串拆分

Python語言中,字符串是以str對象的形式表示的,是不可變的:這意味着不能直接更改內存中的對象。 記住這兩個特色將會幫助您學習(而且記住)如何使用.split( )。app

您猜到字符串的這兩個特徵是如何與Python語言中的拆分功能相關的嗎?若是您猜的到 由於字符串是一種特殊類型,因此.split( )是一個實例方法,那麼您就是正確的!在其它一些語言(如Perl)中,是將原始字符串用做獨立的.split( )函數的輸入,而不是使用方法調用字符串自己。函數

注意:如何調用字符串方法工具

這裏顯示的 .split()這種寫法就是對字符串實例進行調用的方法。 可稱之爲爲靜態方法,但這並不理想的形式,由於它比較「冗長」。爲了完整起見,舉個例子:學習

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

與下面首選的方法一比較,就會以爲上面的寫法顯得有些笨拙了:測試

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

有關Python語言中的實例、類和靜態方法的更多內容,請查看咱們的this

Python深刻教程

字符串不可變會怎樣? 這實際上是提醒您字符串方法不支持就地操做,但它們會在內存中返回一個新對象。3d

注意:就地操做

就地操做是直接更改被調用的對象的操做。 常見的例子是對列表使用的.append( )方法:當您對列表使用.append( )函數時,原列表會被更改,原列表中填加了.append( )的輸入。

無參數字符串拆分

在深刻學習字符串拆分以前,先看一個簡單的例子:

Python 代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

輸出結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

這其實是.split( )調用的一個特例,就是由於簡單,因此我選了它作例子。若是不指定任何分隔符,.split( )會使用空格作爲分隔符。

這種不帶參數直接調用.split( )的另外一個特性是它會自動刪除字符串前導、尾隨以及連續的空格。 比較一下對下面的字符串調用split( )時,不使用分割符和使用" "(空格)做爲分割符時的結果:

Python 代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

Python 代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

首先要注意的是,這個例子反映了Python語言中字符串的不可改變性:後面調用.split( )時是對原始字符串進行操做,而不是對第一次調用.split( )後生成的列表進行操做。

第二個你應該注意到的是,無參數調用.split( )會提取句子中的單詞並丟棄任何空格。

指定分隔符

.split(" ")的結果很直觀。 當有前導或尾隨分隔符時,您將獲得一個空字符串,這能夠在結果列表的第一個和最後一個元素中看到。

當有多個連續的分隔符(例如「this」和「is」之間以及「is」和「my」之間的多個空格),第一個將用做分隔符,後續的分隔符將進入結果列表 做爲空字符串。

注意:調用.split()時的分隔符

雖然上面的示例使用單個空格字符做爲.split( )的分隔符,但並無限制您使用的分隔符的類型或字符串長度。 惟一的要求是您的分隔符是一個字符串。 你可使用從「...」到「separator」等任何東西。

使用Maxsplit對拆分進行限定

.split( )有一個名爲maxsplit的可選參數。 默認狀況下,.split( )將在調用時進行全部可能的拆分。 可是,若是對maxsplit賦值後,只會生成指定數量的拆分。 用咱們以前的示例字符串,能夠看到maxsplit的運行狀況:

Python 代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

運行結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

如上所示,若是將maxsplit設置爲1,則第一個空白區域將做爲分隔符,其他的部分將被忽略。 讓咱們作一些練習來測試一下到目前爲止所學的一切。

練習: 「 本身試試看: Maxsplit」

若是對maxsplit賦一個負數,結果會是怎樣?

答案: 「 本身試試看: Maxsplit」

.split( ) 將對全部的分隔符上進行字符串拆分,這和不設置Maxsplit參數時的缺省設置是同樣的。

練習: 「章節理解檢查」

您最近拿到了一個逗號分隔(CSV)的文件,可是其格式編排的大有問題。 您的任務是將每行提取到一個列表中,該列表的每一個元素表明該文件的列。 這個文件的格式有什麼問題呢? 其中的「Address」字段中包含了多個逗號,但實際上須要在列表中表示爲單個元素!

假定讀入到內存中的文件是下面這樣的多段字符串:

CSV文件:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

但願的輸出結果應該是這樣的由列表組成的列表

Python輸出:


學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

內層的列表是咱們關心的CSV文件的列元素,每個內層的列表是CSV文件的一行,外層的列表把全部的行組合起來。

答案: 「章節理解檢查」

這裏給出個人答案。能夠由幾種方法獲得結果。重要的是如何使用.split(),以及使用附加參數獲得但願的結果:

Python代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

咱們調用了兩次.split( )。第一個調用可能理解起來有點難,但不要擔憂!咱們一步一步看進去,您就會對這些表達式熟悉了。來看看第一個.split( )調用吧:unsplit.split(" n")[1:]。

第一個元素是unsplit,是指向輸入字符串的變量。以後就是.split( )調用:. split(" n")。這裏,咱們使用了一個特殊字符 - 換行符 作爲分隔符。

是作什麼的呢?顧名思義,它指明在讀取字符串的內容時,它以後的每一個字符都應顯示在下一行。像咱們使用的input_string這樣的多行字符串中,每行的末尾都有一個隱藏的 n。

這一行最後的部分用法可能有點新:[1:]。這條語句執行到這個部分以前會輸出一個新的列表, [1:]看起來像列表索引表示,其實它就是一種列表索引的表示方法!這一行最後額外的索引表示法會爲咱們輸出一個列表切片。在本例中,咱們取出索引1以及其後面的全部內容,丟棄索引0處的元素。

總之,咱們遍歷一個字符串列表,其中每一個元素表明多行輸入字符串中除了第一行以外的每一行。

對每一行字符串,咱們再次使用.split( )進行字符拆分,但此次咱們使用maxsplit僅拆分前兩個逗號,保留地址部分的內容原封不動。 以後,咱們把結果添加到已定義的列表數組中,並返回給調用者。

字符串的鏈接及拼接

另外一個字符串的基本操做是與拆分字符串相反的操做:字符串鏈接。 若是您尚未關注到這個功能,請不要擔憂。 這只是把字符串「粘在一塊兒」的一種奇特方式。

使用 + 操做符進行鏈接

有幾種方法能夠作到這一點,具體取決於您要實現的目標。 最簡單和最經常使用的方法是使用加號(+)將多個字符串添加到一塊兒。 只需在您想要鏈接的字符串之間放置一個+:

Pyton代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

和數學運算同樣,您還能夠將字符串相乘來進行字符串重複:

Pyton代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

請記住,字符串自己是不可改變的! 若是想把字符串鏈接或重複的結果存在變量中,則必須將結果賦給新的字符串變量進行保存。

Pyton代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

Pyton代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

Pyton代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

若是不是不可改變的字符串,則full_sentence會輸出"Hello,world,world"。

另外一個須要注意的是Python語言不會進行隱式字符串轉換。 若是您嘗試將字符串與非字符串類型鏈接,Python將引起TypeError:

Pyton代碼:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

結果:

學習Python核心知識點:深刻了解字符串的拆分,鏈接及拼接教程

出錯的緣由是在Python語言中,您只能將字符串與其餘字符串鏈接起來,這是中您須要注意到的Python語言的特色。若是您使用過諸如JavaScript之類的語言就會知道,這些語言中會嘗試進行隱式類型轉換。

相關文章
相關標籤/搜索