Python: plus effcace façon de bande de la ligne du fichier texte
Comment fait-on sur une boucle for et de modifier les entrées dans la liste? Comme, l'équivalent de [line.strip() for line in lines]
, sauf que line.strip()
est enregistré dans la liste de lignes.
Ceci est nécessaire parce que je suis à l'aide d'un vaste ensemble de données, stockées dans la liste. Ce jeu de données qui sera utilisé pour la machine de formation afin de former un classificateur. Plus précisément, le traitement du langage naturel à l'aide de la NLTK lib. Par conséquent, la reproduction du tableau n'est pas possible.
- Voulez-vous dire en fait de modifier le fichier?
- Je pense qu'il veut dire qu'il veut toutes les lignes non-vides - des lignes vides doivent simplement disparaître de sa liste.
- Plus efficace dans quelles conditions? De vitesse? La consommation de mémoire? ... ?
- Nombre de lignes écrites et intepreted.
- Qu'entendez-vous par "enregistrées à la liste de lignes"?
InformationsquelleAutor jhtong | 2012-06-01
Vous devez vous connecter pour publier un commentaire.
Utiliser un générateur d'expression, puis toutes les lignes ne seront pas tenues en même temps.
Voulez-vous stocker le résultat dans la même instance
lines
(pas la remplacer par une nouvelle instance de liste)?lines
avec le contenu de cette nouvelle liste. Mais c'est le moyen le plus rapide pour stocker le résultat dans la même instance de liste (si parler de longueur arbitraire des listes).list_ass_*
fonctions sont mises en œuvre dans listobject.c)Si je vous comprends bien, vous êtes en train de dépouiller les lignes d'un fichier en place plutôt que de créer une toute nouvelle liste. Le problème est qu'en Python les chaînes sont immuables, de sorte que vous ne pouvez pas modifier une chaîne de caractères en place, vous devez en créer un nouveau.
Comme d'autres l'ont suggéré, un générateur d'expression de produire l'dépouillé les chaînes à la demande, plutôt que de les stocker dans une nouvelle liste, la réduction de la demande en mémoire. Si vous vraiment voulez retirer les cordes en place, puis quelque chose comme cela devrait faire l'affaire:
mais il se peut que la création d'une nouvelle liste serait plus rapide de toute façon.
Comment à ce sujet:
qui crée une autre liste (même si c'est le tout stocké dans une mémoire qui peut être un problème avec un grand nombre de lignes).
Sinon, vous pouvez utiliser un générateur d'expression à la place pour éviter le problème de mémoire et il suffit de créer les lignes à la demande: