如何通过拆分字符串列表

问题描述 投票:3回答:3

我有一个字符串的几个大名单。我需要所有这些名单分成两个列表,这样我只保留了2次名单。例如:

lst = ['This is a list', 'of strings', 'blahblahblah', 'split_here', 'something else', 'we like cake', 'aardvarks']

我要抢,只是字符串后“split_here”,使新的名单将是这样的:

new_lst = ['something else', 'we like cake', 'aardvarks']

我尝试这样做:

new_list = str(lst).split('split_here')[1]

但是,新的输出有一堆的转义字符(以下简称“\”符号)。我试着用替换它们:

.replace('\\', '')

但是,这并不能工作。

我想,必须有一个简单的方法来做到这一点,我失踪。

python string list split
3个回答
9
投票

你要找的列表操作,而不是字符串操作。我们只需要找到分隔字符串出现的位置,并分得一杯羹从下一个元素开始,像这样:

lst = ['This is a list', 'of strings', 'blahblahblah', 'split_here', 'something else', 'we like cake', 'aardvarks']
new_list = lst[lst.index('split_here')+1:]

上述假定分隔字符串出现在列表中,否则我们会得到一个ValueError。如预期的结果:

new_list
=> ['something else', 'we like cake', 'aardvarks']

2
投票

使用list#index也许是最简洁的解决方案。

不过,因为你试图找到字符串和分裂的解决方案,你可以使用:

'#'.join(lst).split('split_here#')[-1].split('#')

请注意,只有当你确定#不会出现在你的字符串工作。

下面是在控制台中显示的步骤:

>>> lst = ['This is a list', 'of strings', 'blahblahblah', 'split_here', 'something else', 'we like cake', 'aardvarks']
>>> '#'.join(lst)
'This is a list#of strings#blahblahblah#split_here#something else#we like cake#aardvarks'
>>> '#'.join(lst).split('split_here#')
['This is a list#of strings#blahblahblah#', 'something else#we like cake#aardvarks']
>>> '#'.join(lst).split('split_here#')[-1]
'something else#we like cake#aardvarks'
>>> '#'.join(lst).split('split_here#')[-1].split('#')
['something else', 'we like cake', 'aardvarks']

1
投票

添加到奥斯卡的回答,您可以使用itertools.dropwhile()太:

from itertools import dropwhile

lst = ['This is a list', 'of strings', 'blahblahblah', 'split_here', 'something else', 'we like cake', 'aardvarks']
new_list = list(dropwhile(lambda x: x != 'split_here',lst))[1:]
© www.soinside.com 2019 - 2024. All rights reserved.