如何通过字符串拆分列表

3

我有几个大的字符串列表。我需要将所有这些列表拆分成两个列表,以便只保留第二个列表。例如:

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('\\', '')

但是那样也行不通。我在想可能有一种简单的方法,但我可能忽略了什么。
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']

谢谢!这比我之前尝试的东西简单多了。:) - Ragnar Lothbrok
@RagnarLothbrok 请考虑一下这个链接:https://stackoverflow.com/help/someone-answers - Mehrdad Pedramfar

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

除了Oscar的回答,您还可以使用 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:]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接