在 Python 中根據空格拆分字串
本教程將演示如何在 Python 中根據空格作為定界符來分割字串。
在 Python 中拆分字串意味著根據所使用的分隔符或分隔符將單個字串切成字串陣列。
例如,如果一個字串初始化為 Hello, World! I am here.
,使用空格作為分隔符將其拆分將產生以下輸出:
['Hello,', 'World!', 'I', 'am', 'here.']
在 Python 中使用字串 split()
方法拆分字串
內建的 Python 字串方法 split()
是使用空格分割字串的理想解決方案。預設情況下,split()
方法返回由使用空格作為分隔符分割原始字串而得到子字串陣列。
例如,讓我們使用相同的字串示例 Hello, World! I am here.
,並使用 split()
方法將字串分割成子字串陣列。
string_list = "Hello, World! I am here.".split()
print(string_list)
輸出的結果和預期的一樣。
["Hello,", "World!", "I", "am", "here."]
除此之外,split()
方法還會自動刪除前導和尾隨空格,並將它們視為單個空格分隔符。
讓我們修改前面的示例,使其包含隨機的前導,尾隨和連續空格。
string_list = " Hello, World! I am here. ".split()
print(string_list)
split()
方法自動處理的另一種情況是除空格文字外,還使用製表符,換行符和回車符分別用\t
,\n
和\r
表示。提到的空白格式也被認為是定界符和修剪的主題。
輸出:
['Hello,', 'World!', 'I', 'am', 'here.']
例如:
string_list = " Hello, World! I am here.\nI am also\there too,\rand here.".split()
print(string_list)
輸出:
['Hello,', 'World!', 'I', 'am', 'here.', 'I', 'am', 'also', 'here', 'too,', 'and', 'here.']
考慮到這些因素,你不必擔心在執行函式之前顯式地修剪每個空格。這是一個方便的功能。
在 Python 中使用 re.split()
分割字串
Python RegEx(正規表示式)模組 re
還具有預定義的 split()
函式,我們可以使用它代替內建的 split()
方法。不過,請注意,在效能方面,re.split()
與內建的 split()
方法相比要慢一些。
re.split()
函式接受兩個主要引數:RegEx 字串和執行拆分功能的字串。代表空格的 RegEx 關鍵字是\s
。\s
是所有空格的歸類,包括上述所有的空格(\n
,\t
,\r
,\f
)。
例如,宣告一個字串並執行 re.split()
將它們拆分為子字串陣列。要考慮尾隨空格和前導空格,請在 RegEx 字串中新增一個+
符號,以將一個或多個連續空格作為單個組進行匹配。
另外,將關鍵字 r
附加到 RegEx 字串中,以確保 Python 適當地處理轉義序列。
import re
exStr = "Hello, World!\nWelcome\tto my tutorial\rarticle."
print(re.split(r"\s+", exStr))
在 Python 中使用 re.findall()
代替 re.split()
拆分字串
另外,也可以使用 re.findall()
。findall()
函式與 split()
完全相反。此函式查詢與給定 RegEx 字串匹配的所有子字串,而 split()
方法使用 RegEx 字串作為分隔符。
要使用 findall()
函式使用空格分割字串,請通過大寫字母(\S
),它是空格匹配字元\s
的相反面。findall()
接受與 split()
相同的引數。
import re
exStr = "Hello, World!\nWelcome\tto my tutorial\rarticle."
print(re.findall(r"\S+", exStr))
這兩個函式將產生相同的輸出:
['Hello,', 'World!', 'Welcome', 'to', 'my', 'tutorial', 'article.']
總之,使用空格作為定界符來分割字串的最好和最優化方法是內建的 split()
方法。它附加在字串物件上,預設情況下考慮前導和尾隨空格。使用此函式也不需要任何正規表示式知識。
否則,儘管兩個函式的執行速度都比內建的 split()
方法慢,但 re.split()
和 re.findall()
可以用作 split()
方法的替代品。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn