Python 豆知識 — str.partition(sep)
假設有以下字串:
s = 'data1: {"title": "abc", "content": "123"}'
當我們想把字串切成 data1
與 {"title": "abc", "content": "123"}
2 個部分的話,多數人應該直覺會想到 s.split(': ')[0]
與 ': '.join(s.split(': ')[1:])
這個簡單的方法。
但是上述解法有個問題,因為 :
其實也出現在 data1:
之後的字串裡,所以也被 split(': ')
切割成好幾段,所以 data1:
之後的字串需要再用 (': ').join()
接回來。
要是可以只針對第 1 個 :
字串做分隔就好,將可以省去再 join 後續字串的成本。
針對上述需求,介紹 1 個相對少人知道,但是知道後會很實用的 Python 字串方法:
str.partition(sep)
上述的字串,只要用 partiton()
就可以完美切割出 data1
與後面字串:
>>> s = 'data1: {"title": "abc", "content": "123"}'
>>> s.partition(': ')
('data1', ': ', '{"title": "abc", "content": "123"}')
從上述 partition 結果可以看到, partition 只針對第 1 個 :
字串做分隔,將字串分為 3 個部分:
data1
:
{"title": "abc", "content": "123"}
這就是 str.partition(sep)
的作用,以第 1 次出現分隔字串(sep)的地方開始做分割,將字串分割為 (分隔字串前, 分隔字串, 分隔字串後)
3 個部分,而且不管有沒有出現分隔字串, str.partition(sep)
都會回傳長度為 3 的 tuple 。
str.partition(sep)
對於只需要將字串分割為 (分隔字串前, 分隔字串, 分隔字串後)
的情況比起使用 str.split(sep)
更加實用!
以上!Python 豆知識,我們下次見!