3
我想分割一個字符串到一個列表中,由python中的字符更改分隔。我發現這非常困難,但肯定我已經完全想到了,並且錯過了一個可能簡單的解決方案。 實施例:如何通過重複字符查找和分割字符串?
'abgg22ffeeekkkk1zzabbb'
將成爲:
[ 'A', 'B', 'G-G', '22', 'FF', 'EEE', 'KKKK', '1', 'ZZ', 'A', 'BBB']
我想分割一個字符串到一個列表中,由python中的字符更改分隔。我發現這非常困難,但肯定我已經完全想到了,並且錯過了一個可能簡單的解決方案。 實施例:如何通過重複字符查找和分割字符串?
'abgg22ffeeekkkk1zzabbb'
將成爲:
[ 'A', 'B', 'G-G', '22', 'FF', 'EEE', 'KKKK', '1', 'ZZ', 'A', 'BBB']
import itertools
[''.join(value) for key, value in itertools.groupby(my_str)]
>>> import re
>>> my_str = 'abgg22ffeekkkk1zzabbb'
>>> [m.group() for m in re.finditer(r'(.)\1*', my_str)]
['a', 'b', 'gg', '22', 'ff', 'ee', 'kkkk', '1', 'zz', 'a', 'bbb']
謝謝你,這完美地工作。由於我對python還很陌生,所以我從未想過這個方法。我正在寫一個非常冗長的函數來做你在一行中所做的事情。你有沒有可能解釋這個方法究竟是如何工作的,或者說我指出了正確的方向?我正在查看itertools文檔,但這比我能夠掌握ATM要多一點。 – Zak
是的,itertools中的東西很棒,而且經常介意彎曲。 :-)請參閱[itertools.groupby](http://docs.python.org/library/itertools.html#itertools.groupby)文檔中的等效實現,我敢打賭,你寫的內容長度相似。不同之處在於itertools真的是迭代的,所以doens不需要將整個序列加載到內存中或者保持它執行此操作。您可能想要[閱讀](http://www.learningpython.com/2009/02/23/iterators-iterables-and-generators-oh-my/)以及它們爲什麼很好。 –
非常感謝,這些鏈接看起來像是非常有用。 – Zak