Python: la Suppression des chaînes spécifiques à partir d'un fichier
J'ai un fichier de données (onu-construit en désordre fichier) à partir de laquelle j'ai gommage spécifique de la liste de chaînes de caractères (supprimer des chaînes de caractères).
Ici est ce que je fais mais sans résultat:
infile = r"messy_data_file.txt"
outfile = r"cleaned_file.txt"
delete_list = ["firstname1 lastname1","firstname2 lastname2"....,"firstnamen lastnamen"]
fin=open(infile,"")
fout = open(outfile,"w+")
for line in fin:
for word in delete_list:
line = line.replace(word, "")
fout.write(line)
fin.close()
fout.close()
Lorsque j'exécute le fichier, j'obtiens l'erreur suivante:
NameError: name 'word' is not defined
S'il vous plaît aider!
- Êtes-vous d'obtenir toute sorte d'erreur ou est-il juste de ne pas générer un fichier, mais le script s'affiche à exécuter?
- Non, je n'obtiens pas d'erreur..Le fichier apparaît à exécuter. L' .py fichier de générer un fichier de log qui je peux regarder. Je ne vois rien dans le répertoire.
- Après l'exécution, ne cleaned_file.txt existent-ils?
- non, je ne vois pas cleaned_file.txt..
- Quelle plate-forme êtes-vous sur? L'utilisateur qui exécute le programme ont la permission d'écrire dans le répertoire dans lequel le programme est exécuté?
- Ajouter une instruction print après votre fout = et file_data lignes. Imprimer quoi que ce soit mais juste de vérifier que votre programme est en exécution de cette mesure. L'autre pensée que j'ai eu était d'utiliser un chemin d'accès complet pour votre dans et hors de fichier. De cette façon, il n'y a pas une possibilité pour que le fichier soit écrit à un endroit inattendu.
- Oui, j'ai des autorisations d'écriture!
- Appologies. Je suis en train de supprimer des chaînes de caractères. Vous ne savez pas comment le faire fonctionner.
- Comment êtes-vous de l'exécuter? De quoi êtes-vous en tapant sur la ligne de commande pour l'exécuter?
- Je suis en double cliquant sur le .py fichier. Il semble invoquer l'application python qui disparaît après quelques secondes. Je n'obtiens pas d'erreur de la pensée..
- -1: L'indentation est tellement mauvais, qu'il est impossible de juger de ce qui se passe.
- Exécuter à partir d'une invite de commande, de sorte que vous pouvez voir tout ce qu'il génère immédiatement avant la fermeture.
- Vous n'êtes pas l'exécution de la liste de code si vous avez reçu un message d'erreur " mot " n'est pas défini.
Vous devez vous connecter pour publier un commentaire.
La
readlines
méthode renvoie une liste de lignes, pas des mots, de sorte que votre code ne fonctionne que lorsque l'un de vos mots est sur une ligne.Depuis les fichiers sont des itérateurs sur les lignes de ce qui peut être fait beaucoup plus facile:
Basé sur votre commentaire "je suis en double cliquant sur le .py fichier. Il semble invoquer l'application python qui disparaît après quelques secondes. Je n'obtiens pas d'erreur de la pensée" je crois que votre problème est que le script n'est pas de trouver le fichier d'entrée. C'est aussi pourquoi vous n'obtenez pas n'importe quelle sortie. Lorsque vous double-cliquez sur celle-ci... en fait je ne me souviens pas où l'interprète est d'aller le chercher mais je pense que c'est là que l'python.exe est installé.
Utiliser un chemin d'accès complet comme.
Aussi, pour votre santé mentale, de l'exécuter à partir de la ligne de commande au lieu de double-cliquant. Il sera beaucoup plus facile de repérer les erreurs/de sortie.
Pour enlever le string dans le même fichier, j'ai utilisé ce code
À l'OP,
Ross Patterson de la méthode ci-dessus fonctionne parfaitement pour moi, c'est à dire
Exemple:
J'ai un fichier nommé messy_data_file.txt qui comprend les mots suivants (les animaux), pas forcément sur la même ligne. Comme ceci:
Quand j'ai modifier le code pour lire (en fait juste d'ajouter les mots à supprimer le "delete_list" de la ligne):
La résultante "cleaned_file.txt" ressemble à ceci:
Il y a une ligne vide où la "Chèvre" utilisé pour être (où, curieusement, en supprimant "l'Âne" n'a pas), mais pour ma part, cela fonctionne bien.
J'ai aussi ajouter input("Appuyez sur Entrée pour quitter...") la fin du code de garder la fenêtre de ligne de commande de l'ouverture et la fermeture brutale sur moi quand je suis en double-cliquant sur l'remove_text.py fichier pour l'exécuter, mais prendre note que vous allez prendre, pas d'erreurs de cette façon.
À faire que je le lance depuis la ligne de commande (où C:\Just_Testing c'est le répertoire où tous mes fichiers, c'est à dire remove_text.py et messy_text.txt)
comme ceci:
ou
fonctionne exactement de la même.
Bien sûr, comme lors de l'écriture de code HTML, je suppose qu'il ne fait jamais de mal à utiliser un chemin d'accès complet lors de l'exécution de py ou python à partir d'un endroit autre que le répertoire que vous arrive d'être assis dans, tels que:
Bien sûr, dans le code, il serait:
Veillez à utiliser le même chemin d'accès complet à la place de votre nouvellement créé cleaned_file.txt ou il sera créé où que vous soyez et qui pourrait causer de la confusion lors de la recherche pour elle.
Personnellement, j'ai le CHEMIN d'accès dans mes Variables d'Environnement mis au point à tous mes Python installe à savoir C:\Python3.5.3, C:\Python2.7.13, etc. donc, je peux utiliser py ou python à partir de n'importe où.
De toute façon, j'espère faire de beaux-d'ajustements apportés à ce code à partir de M. Patterson pouvez-vous obtenir exactement ce dont vous avez besoin. 🙂
.