給定一個字符串:根據Python中的搜索詞對字符串進行分區?
x = 'foo test1 test1 foo test2 foo'
我想foo
分割字符串,所以我得到的線沿線的東西:
['foo', 'test1 test1 foo', 'test2 foo'] (preferred)
or
[['foo'], ['test1', 'test1', 'foo'], ['test2', 'foo']] (not preferred, but workable)
我試過itertools.groupby
:
In [1209]: [list(v) for _, v in itertools.groupby(x.split(), lambda k: k != 'foo')]
Out[1209]: [['foo'], ['test1', 'test1'], ['foo'], ['test2'], ['foo']]
但它並不完全給我我要找的東西。我知道我可以使用一個循環,這樣做:
In [1210]: l = [[]]
...: for v in x.split():
...: l[-1].append(v)
...: if v == 'foo':
...: l.append([])
...:
In [1211]: l
Out[1211]: [['foo'], ['test1', 'test1', 'foo'], ['test2', 'foo'], []]
但它不是非常有效的離開空列表的末尾。有一種更簡單的方法嗎?
我想保留分隔符。
可以通過Python中的分隔符[分割字符串複製](https://stackoverflow.com/questions/3475251/split-a-string-by-a-delimiter-in-python) –
如果字符串不以''foo''結尾會出現什麼情況? – holdenweb
@holdenweb它總是會的。 –