J'ai plusieurs grandes listes de chaînes. Je dois diviser toutes ces listes en deux listes afin de ne conserver que la deuxième liste. Par exemple:
.replace('\\', '')
Je veux saisir uniquement les chaînes après 'split_here' afin que la nouvelle liste soit la suivante:
new_list = str(lst).split('split_here')[1]
I essayé ceci:
new_lst = ['something else', 'we like cake', 'aardvarks']
Mais la nouvelle sortie a un tas de caractères d'échappement (le symbole "\"). J'ai essayé de les remplacer par:
lst = ['This is a list', 'of strings', 'blahblahblah', 'split_here', 'something else', 'we like cake', 'aardvarks']
Mais cela n'a pas fonctionné non plus.
Je pense qu'il doit y avoir un moyen simple de faire cela qui me manque.
3 Réponses :
Vous recherchez des opérations de liste, pas des opérations de chaîne. Nous avons juste besoin de trouver la position où apparaît la chaîne de séparation, et de prendre une tranche à partir de l'élément suivant, comme ceci:
new_list => ['something else', 'we like cake', 'aardvarks']
Ce qui précède suppose que la chaîne de séparation est présente dans la liste, sinon, nous obtiendrons une ValueError
. Le résultat est comme prévu:
lst = ['This is a list', 'of strings', 'blahblahblah', 'split_here', 'something else', 'we like cake', 'aardvarks'] new_list = lst[lst.index('split_here')+1:]
Je vous remercie! C'était beaucoup plus simple que les choses que j'essayais. :)
@RagnarLothbrok Veuillez considérer ceci: stackoverflow.com/help/someone-answers
Utiliser list # index
est probablement la solution la plus propre.
Pourtant, depuis vous essayiez de trouver une solution avec des chaînes et du fractionnement, vous pourriez utiliser:
>>> 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']
Notez que cela ne fonctionne que si vous êtes sûr que #
n'apparaît jamais dans vos chaînes.
Voici les étapes indiquées dans la console:
'#'.join(lst).split('split_here#')[-1].split('#')
En plus de la réponse aux Oscars, vous pouvez également utiliser itertools.drop while ()
:
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:]