Skip to content

[Python] split() 和 splitlines() 函式的使用方法

Last Updated on 2021-06-22 by Clay

在 Python 中,我們若是想要將一段文本依照『特定字元』來切割,讓文本變成一段段的 List 資料型態儲存著,我們可以簡單地使用 split() 這個函式來完成。

而 splitlines() 這個函式與 split() 非常相像,不過 splitlines() 是專門處理換行符號的,並且在處理時還能選擇是否保留著換行符號,非常好用。


Split()

假設我們有著以下這樣的文本:

text = \
"""
Today is a nice day.
This is a good day.
Hello! How are you?
"""

假設我們想要以空格符號 " " 為切割點,我們得到的結果應如下:

for word in text.split():
    print(word)


Output:

Today
is
a
nice
day.
This
is
a
good
day.
Hello!
How
are
you?

除了預設的以『空格符號』切割外,我們也可以自己選擇換行符號 "\n" 來進行切割。

for word in text.split('\n'):
    print(word)


Output:

Today is a nice day.
This is a good day.
Hello! How are you?

不過在以換行符號 "\n" 切割的時候,split() 是沒有比 splitlines() 方便的,以下我們就來看看 splitlines() 的範例。


splitlines()

splitlines() 比 split() 優秀的地方在於,我們的文本中很有可能並不僅僅只存在著 "\n" 這樣單純的換行, "\r"、"\r\n"、"\n" 等等也都會被視作換行。

根據我的經驗,同時考慮 "\r"、"\r\n"、"\n" 三種情況的切割點效果比較好,畢竟不會出現應該換行卻沒有被切割的句子。

同時,splitlines() 還可以透過 keepends 參數決定是否在輸出結果中保留『換行符號』,在某些情況是非常有用的。

from pprint import pprint


for word in text.splitlines(keepends=True):
    pprint(word)


Output:

'\n'
'Today is a nice day.\n'
'This is a good day.\n'
'Hello! How are you?\n'

這裡我使用了 pprint 來顯示換行符號。值得一提的是 keepends 若為 True 表示保留換行符號;反之,則不保留。


References


Read More

Tags:

Leave a Reply