Python: Filtre les lignes d'un fichier texte qui contient un mot en particulier
En Python, je veux écrire un programme qui filtre les lignes de mon fichier texte qui contient le mot "apple" et d'écrire ces lignes dans un nouveau fichier texte. Ce que j'ai essayé juste écrit le mot "apple" dans mon nouveau fichier texte, alors que je veux les lignes ensemble. Je suis un débutant en Python, donc, de bien vouloir répondre à ma question, que j'ai vraiment besoin de cela.
OriginalL'auteur ahmad | 2011-03-09
Vous devez vous connecter pour publier un commentaire.
Utiliser pouvez obtenir toutes les lignes contenant 'pomme' l'aide d'une liste-de la compréhension:
Donc - aussi dans un code-ligne - vous pouvez créer un nouveau fichier texte:
Et eyquem est juste: il est certainement plus rapide de le garder comme un itérateur et écrire
writelines( line for line in open('textfile') if 'apple' in line)
Ok, je suis totalement d'accord que -- pour les gros fichiers, il convient de mieux utiliser les générateurs, depuis un générateur se comporte de façon paresseuse et donc ne consomme que très peu de mémoire. Mais probablement pour des petits fichiers de la liste-la compréhension est la solution plus rapide?
Nan... le maintien des choses comme des générateurs/itérateurs est de loin plus efficace. La compréhension de liste est encore de la création de l'itérateur, qui est alors le remplissage d'une liste, et une fois terminé passage que la liste de writelines qui tourne dans un itérateur.
Puis-je utiliser plusieurs cordes ici? Ex: je veux garder la ligne unique avec de la ficelle de "pomme" ou "orange"
Vous pouvez remplacer
if 'apple' in line
avecif 'apple' in line or 'orange' in line
OriginalL'auteur phynfo
OriginalL'auteur eyquem
À l'aide de générateurs, c'est de la mémoire efficace et rapide
J'aime les solutions de facilité, avec plus de cerveau des dommages pour la lecture 🙂
OriginalL'auteur Mario César
if "apple" in line:
devrait fonctionner.OriginalL'auteur neil
Pour Python3 - voici de travail et rapide exemple
OriginalL'auteur pbaranski