2013-06-14 7 views
-1

Je suis en train de lire un fichier texte et d'en extraire deux colonnes en les séparant par espace et en les écrivant dans un autre fichier texte. Il y a des caractères '-' dans certaines lignes. Je veux les enlever et écrire. Quel est le problème avec le code suivant? J'ai utilisé line.replace() aussi qui ne fonctionnait pas.Suppression des caractères indésirables d'un fichier-Python

fo = open('referrer.txt','rw') 

try: 
    for line in open('c1'): 

     if line.startswith('#'): 
      continue 
     else: 
      resource = line.split(' ')[5] 
      fo.write(re.sub('-',' ',line.split(' ')[11]) +' '+resource + '\n') 
except: 
    pass 
fo.close() 

plus d'informations: c1 a beaucoup d'informations dans chaque ligne séparées par un espace. Je le lis extrait les 5ème et 11ème cordes de chaque ligne. alors cette ligne referrer.txt a quelque chose comme "abssfdf-cfgd abc". Je veux enlever le caractère '-' dans chaque ligne avant de l'écrire à referrer.txt?

+0

vous devriez essayer quelques instructions de débogage d'impression – jamylak

+1

Vous ne donnez pas assez d'informations pour que nous puissions vous aider ... Quelle erreur obtenez-vous? Quel type d'intrants donnez-vous à votre code? Tout ce que je peux vous dire là-bas, c'est que votre sous-marin va bien, je suis sûr que le remplacement serait aussi. Je pense que votre problème peut être dans la façon dont vous gérez la séparation de ligne. – zmo

+1

Selon la taille du fichier: 'new_file.write (old_file.read(). Replace ('-', ''))' pourrait fonctionner – mgilson

Répondre

2

Lorsque vous écrivez, il déplace le pointeur du fichier vers l'avant et remplace le contenu d'origine. La lecture suivante commence à l'endroit où votre écriture se termine.

Vous feriez mieux d'écrire dans un nouveau fichier.

+0

il ne semble pas qu'il écrit dans le même fichier. – njzk2

+0

@ njzk2 Je suis une elle .. :) Je l'écris dans le même fichier –

+1

Vous pouvez simplement écrire dans un nouveau fichier. Enfin, renommez le nouveau fichier pour remplacer celui d'origine. –

-1

si vous êtes sous Linux, utilisez la commande Sed!

import commands 
commands.getstatusoutput('sed -i 's/\-/ /g' /youfile.txt') 

pour ignorer la ligne commençant par '#' utilisation: grep "# de" de fichier.txt> other_filer.txt. J'avais l'habitude d'utiliser des commandes OS pour gérer les fichiers.

Questions connexes