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
- https://python-reference.readthedocs.io/en/latest/docs/str/split.html
- https://www.journaldev.com/24530/python-string-splitlines
- https://www.geeksforgeeks.org/python-string-splitlines/