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 個部分:

  1. data1
  2. :
  3. {"title": "abc", "content": "123"}

這就是 str.partition(sep) 的作用,以第 1 次出現分隔字串(sep)的地方開始做分割,將字串分割為 (分隔字串前, 分隔字串, 分隔字串後) 3 個部分,而且不管有沒有出現分隔字串, str.partition(sep) 都會回傳長度為 3 的 tuple 。

str.partition(sep) 對於只需要將字串分割為 (分隔字串前, 分隔字串, 分隔字串後) 的情況比起使用 str.split(sep) 更加實用!

以上!Python 豆知識,我們下次見!

FOLLOW US

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!