Skip to main content
 首页 » 编程设计

python之根据 Python 中的搜索词对字符串进行分区

2025年05月04日20wayfarer

给定一个字符串:

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'], []] 

但它不是很有效,最后留下空列表。有没有更简单的方法?

我想保留分隔符。

请您参考如下方法:

也许不是最漂亮的方法,但简洁明了:

[part + 'foo' for part in g.split('foo')][:-1] 

输出:

['foo', ' test1 test1 foo', ' test2 foo']