深入了解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

字符串拆分

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

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

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

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

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

Python深入教程

私信小編007 即可獲取大量的PDF以及視頻教程!希望你早日入門拿到高薪!

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

注意:就地操作

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

無參數字符串拆分

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

Python 代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

輸出結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

這實際上是.split( )調用的一個特例,就是因為簡單,所以我選了它做例子。如果不指定任何分隔符,.split( )會使用空格做為分隔符。

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

Python 代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

Python 代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

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

指定分隔符

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

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

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

雖然上面的示例使用單個空格字符作為.split( )的分隔符,但並沒有限制您使用的分隔符的類型或字符串長度。 唯一的要求是您的分隔符是一個字符串。 你可以使用從“...”到“separator”等任何東西。

使用Maxsplit對拆分進行限定

.split( )有一個名為maxsplit的可選參數。 默認情況下,.split( )將在調用時進行所有可能的拆分。 但是,如果對maxsplit賦值後,只會生成指定數量的拆分。 用我們之前的示例字符串,可以看到maxsplit的運行情況:

Python 代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

運行結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

練習: “ 自己試試看: Maxsplit”

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

答案: “ 自己試試看: Maxsplit”

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

練習: “章節理解檢查”

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

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

CSV文件:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

希望的輸出結果應該是這樣的由列表組成的列表

Python輸出:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

答案: “章節理解檢查”

這裡給出我的答案。可以由幾種方法得到結果。重要的是如何使用.split(),以及使用附加參數得到希望的結果:

Python代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

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

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

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

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

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

字符串的連接及拼接

另一個字符串的基本操作是與拆分字符串相反的操作:字符串連接。 如果您還沒有關注到這個功能,請不要擔心。 這只是把字符串“粘在一起”的一種奇特方式。

使用 + 操作符進行連接

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

Pyton代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

和數學運算一樣,您還可以將字符串相乘來進行字符串重複:

Pyton代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

Pyton代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

Pyton代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

Pyton代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

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

另一個需要注意的是Python語言不會進行隱式字符串轉換。 如果您嘗試將字符串與非字符串類型連接,Python將引發TypeError:

Pyton代碼:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

結果:

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點

出錯的原因是在Python語言中,您只能將字符串與其他字符串連接起來,這是中您需要注意到的Python語言的特點。如果您使用過諸如JavaScript之類的語言就會知道,這些語言中會嘗試進行隱式類型轉換。

深入瞭解字符串的拆分,連接及拼接教程!劃重點:必學核心知識點


分享到:


相關文章: