Как разбить список по строке - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть несколько больших списков строк.Мне нужно разделить все эти списки на два списка, чтобы я оставил только второй список.Например:

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]

Но в новом выводе есть куча escape-символов (символ "\").Я попытался заменить их на:

.replace('\\', '')

Но это тоже не сработало.

Я думаю, что должен быть простой способ сделать это, что я скучаю.

Ответы [ 3 ]

0 голосов
/ 03 февраля 2019

Использование 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']
0 голосов
/ 03 февраля 2019

Добавив к Оскару ответ, вы также можете использовать 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:]
0 голосов
/ 03 февраля 2019

Вы ищете операции со списком, а не операции со строками.Нам просто нужно найти позицию, где появляется строка-разделитель, и взять фрагмент, начиная со следующего элемента, например:

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']
...