當(dāng)我們對字符串進行分割時,且分割符是 \n
,有可能會出現(xiàn)這樣一個窘境:
>>> str = "a\nb\n"
>>> print(str)
a
b
>>> str.split('\n')
['a', 'b', '']
>>>
會在最后一行多出一個元素,這可就太多余了吧。
實際上對于這種情況,你可以直接這樣子
>>> str = "a\nb\n"
>>>
>>> str.split()
['a', 'b']
即使是多個換行符,也照樣適用
>>> str = "a\n\nb\n\n"
>>>
>>> str.split()
['a', 'b']
有的人還會建議使用 splitlines
>>> str = "a\nb\n"
>>>
>>> str.splitlines()
['a', 'b']
但其實,splitlines 方法只有在上面這種僅一個換行符的場景下,才能達(dá)到如上預(yù)期的。比如下邊的案例,就無法適用:
>>> str = "a\n\nb\n\n"
>>>
>>> str.splitlines()
['a', '', 'b', '']
在這里有必要補充下,對 splitlines 的原理做一些說明
其實 splitlines 函數(shù)還有一個 keepends 參數(shù) ,意思是 是否要保留換行符
默認(rèn)值為 False,也正是這個原因,上面的例子才有那樣的效果 – 去掉了最后一個元素
試著指定該參數(shù)為 True,你就會發(fā)現(xiàn),原來 splitlines 是為換行符為界將字符串分成多個,但并不是直接拿掉換行符。
>>> str = "a\nb\n"
>>> str.splitlines(True)
['a\n', 'b\n']
因此在多個換行符的情況下,請務(wù)必使用 split 方法。
審核編輯:湯梓紅
-
字符串
+關(guān)注
關(guān)注
1文章
585瀏覽量
20563 -
python
+關(guān)注
關(guān)注
56文章
4802瀏覽量
84889
發(fā)布評論請先 登錄
相關(guān)推薦
評論