Suppression de ligne commençant par

Aku -  
 Aku -
Bonjour,

J'ai quelques difficultés en python
Je cherche a obtenir un programme suppriment des lignes commençant par un espace ou un point d'exclamation puis un espace et garder les lignes commençant par un point d'exclamation et une étoile :
lignes a supprimer : ' ' et '! '
ligne à garder : !*

voici mon programme actuel :

chaine = r"! " #Texte à rechercher
contenu = ""

fichier = open("C:\\Users\\a141726\\Desktop\\TestPython\\LMAM1601464943.txt","r")
for ligne in fichier:
if not(chaine in ligne):
contenu += ligne
fichier.close()

fichier = open('C:\\Users\\a141726\\Desktop\\TestPython\\LMAM1601464943v2.txt', 'w')
fichier.write(contenu)
fichier.close()

le problème et que le fichier que j'obtiens à la fin est totalement déstructure et m'affiche des !?? un peut partout.

Pouvez vous m'aider
merci d'avance

A voir également:

4 réponses

Utilisateur anonyme
 
Tu aurais un exemple de fichier à traiter à mettre en pièce jointe pour qu'on teste chez nous ?
0
Aku
 
Bonjour,
Voici un exemple du fichier que je doit traiter, J'ai fait quelque modification car ce sont des fichier confidentiel, et je ne suis que stagiaire .. Je vous rappel que je veut seulement conserver les lignes commençant par !* ________________________________________________________________________________________________________________
! ! ! ! !
! Cpte annexe Ent Part Dev Pério ! Montant ca EU 2013 ! Montant ca EU 2012 ! Montant ca EU 2011 !
!__________________________________________!_______________________!______________________!______________________!
!!
! ! ! ! !
!* 00012 AAAAAAAAAAAAAA ! 0.000,00 ! 0.000,00 ! 0.000,00 !
! ! ! ! !
!* 00016 AAAAAAAAAAAAAA ! 0,00 ! 0,00 ! 000,00 !
!
! ! ! ! !


J'ai essayer aussi en bash mais ça ne marche pas ...

FINDSTR "!* " C:\Users\a141726\Desktop\TestPython\LMAM1601464943.txt > C:\Users\a141726\Desktop\TestPython\LMAM1601464943v2.txt

ça me copie toutes les lignes dans le nouveau fichier
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Aku,

Un truc comme cela devrait faire l'affaire, je pense :

fichier_in = open("fichier_originel.txt","r")
fichier_out = open("extraction.txt", "w")
for ligne in fichier_in:
    if ligne.startswith("!*"):
        fichier_out.write(ligne)
fichier_in.close()
fichier_out.close()


Dal
0
Aku
 
Merci pour ton aide Dal, ton script me parait tout à fait fonctionnel, mais bizarrement le fichier de sortie est vide ...
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Chez moi il n'est pas vide.

Essaye de rajouter fichier_out.flush() avant le fichier_out.close().
0
Aku
 
Toujours vide :/ ça me produit un fichier de 0ko peut être que cela vien de ma version de python non ? J'ai python 3.3.3
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
J'utilise Python 2.7.3 sous Cygwin.

C'est bizarre. En principe le flush n'est pas nécessaire si tu fermes bien le fichier.

Cela dit, je ne pratique pas Python depuis très longtemps, et il y a peut-être un truc qui m'échappe.

Tu pourrais essayer ainsi aussi :

fichier_in = open("fichier_originel.txt","r")
with open("extraction.txt", "w") as fichier_out:
    for ligne in fichier_in:
        if ligne.startswith("!*"):
            fichier_out.write(ligne)
fichier_in.close()


ce qui fermera fichier_out même si une exception se produit.

Sinon, tu devrais re-poster ton code entier et voir si quelqu'un de plus expert que moi en Python peut trouver ce qui ne va pas dans ton code.


Dal
0
Aku
 
J'ai essayer et ça ne fonctionne toujours pas :/
0
Utilisateur anonyme
 
Qu'est-ce qui ne fonctionne pas? Montre ton code modifié...
0