如何通过拆分字符串列表

时间:2019-02-03 10:58:23

标签: python string list split

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

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 个答案:

答案 0 :(得分: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']

答案 1 :(得分: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']

答案 2 :(得分: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:]