给定一个字符串:
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'], []]
但将空列表放在最后并不是很有效。有更简单的方法吗?你知道吗
我想保留分隔符。你知道吗
您可以将str.partition用于您的案例:
也许不是最漂亮的方法,但简洁明了:
输出:
你想过在字符串上迭代并使用一个开始位置来搜索吗?这通常比在你走的时候把琴弦切碎要快。这可能适合您:
相关问题 更多 >
编程相关推荐