我有一个字符串的几个大名单。我需要所有这些名单分成两个列表,这样我只保留了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('\\', '')
但是,这并不能工作。
我想,必须有一个简单的方法来做到这一点,我失踪。
你要找的列表操作,而不是字符串操作。我们只需要找到分隔字符串出现的位置,并分得一杯羹从下一个元素开始,像这样:
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']
使用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']
添加到奥斯卡的回答,您可以使用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:]