首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >按索引列表拆分字符串

按索引列表拆分字符串
EN

Stack Overflow用户
提问于 2012-06-01 21:43:23
回答 3查看 38.5K关注 0票数 35

我想通过索引列表拆分字符串,其中拆分的段从一个索引开始,在下一个索引之前结束。

示例:

代码语言:javascript
复制
s = 'long string that I want to split up'
indices = [0,5,12,17]
parts = [s[index:] for index in indices]
for part in parts:
    print part

这将返回:

我要拆分的

长字符串

我想拆分的字符串

我想要分开

我想分头行动

我正在尝试获取的

long

字符串

我想拆分

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-01 21:45:37

代码语言:javascript
复制
s = 'long string that I want to split up'
indices = [0,5,12,17]
parts = [s[i:j] for i,j in zip(indices, indices[1:]+[None])]

返回

代码语言:javascript
复制
['long ', 'string ', 'that ', 'I want to split up']

您可以使用以下命令进行打印:

代码语言:javascript
复制
print '\n'.join(parts)

另一种可能性(不复制indices)是:

代码语言:javascript
复制
s = 'long string that I want to split up'
indices = [0,5,12,17]
indices.append(None)
parts = [s[indices[i]:indices[i+1]] for i in xrange(len(indices)-1)]
票数 47
EN

Stack Overflow用户

发布于 2012-06-01 21:52:37

以下是大量使用itertools module的简短解决方案。tee函数用于对索引进行成对迭代。有关更多帮助,请参阅模块中的配方部分。

代码语言:javascript
复制
>>> from itertools import tee, izip_longest
>>> s = 'long string that I want to split up'
>>> indices = [0,5,12,17]
>>> start, end = tee(indices)
>>> next(end)
0
>>> [s[i:j] for i,j in izip_longest(start, end)]
['long ', 'string ', 'that ', 'I want to split up']

编辑:这是一个不复制索引列表的版本,所以它应该更快。

票数 4
EN

Stack Overflow用户

发布于 2019-08-04 06:18:24

如果您不想对索引列表进行任何修改,您可以编写一个生成器:

代码语言:javascript
复制
>>> def split_by_idx(S, list_of_indices):
...     left, right = 0, list_of_indices[0]
...     yield S[left:right]
...     left = right
...     for right in list_of_indices[1:]:
...         yield S[left:right]
...         left = right
...     yield S[left:]
... 
>>> 
>>> 
>>> s = 'long string that I want to split up'
>>> indices = [5,12,17]
>>> [i for i in split_by_idx(s, indices)]
['long ', 'string ', 'that ', 'I want to split up']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10851445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档