Débutant à besoin d'aide

Débutant à besoin d'aide - Python - Programmation

Marsh Posté le 12-11-2014 à 21:25:28    

Je débute en python et j'ai besoin d'aide.
Mon problème, j'ai un fichier nommé "zombi.txt", ce fichier contient une foule de ligne.
Je recherche des variables spécifiques et le texte qui suit :
_bh15w("y\030`\v(lW\022&QM[\022%W\127_B" )
_bh15w("y\b`rW\022_\022Qzc[[-" )
 
Je connais le début toujours le même, dans notre exemple: (_bh15w(), et la fin qui fini toujours par " ). Ce bout de variable peut se trouver plusieurs fois par ligne.
Je cherche à extraire directement c'est donnée dans un fichier texte.
J'ai essayer différente méthode (avec regex), mais je m'en sors pas.

Reply

Marsh Posté le 12-11-2014 à 21:25:28   

Reply

Marsh Posté le 12-11-2014 à 21:43:33    

Bon, je me lance :
 

Code :
  1. with open("zombi.txt" ) as src:
  2.     for line in src.read():
  3.         if line.startswith("_bh15w()" ) and line.endswith("\" )" ):
  4.             ...


 
(pas testé, vite écrit)


Message édité par suizokukan le 12-11-2014 à 21:43:46

---------------
rule #1 : trust the python
Reply

Marsh Posté le 12-11-2014 à 22:02:58    

Je viens de tester :  
with open("zombi.txt" ) as src:
    for line in src.read():
        if line.startswith("_bh15w" ) and line.endswith("\" )" ):
           #print (line)
        ...
 
Je n'est rien en sorti aucune line avec mon code avec ou sans print


Message édité par zombilamouche le 12-11-2014 à 22:03:48
Reply

Marsh Posté le 12-11-2014 à 23:25:00    

Tu as sans doute un problème avec  

Code :
  1. if line.startswith("_bh15w" ) and line.endswith("\" )" )


 
Essaie avec  

Code :
  1. if line.startswith("_bh15w" ):


 
 


---------------
rule #1 : trust the python
Reply

Marsh Posté le 13-11-2014 à 09:54:11    

merci pour ta réponse.
j'ai réalisé celà :

Code :
  1. #!/usr/bin/python
  2. # -*- coding: iso-8859-1 -*-
  3. fichier ="zombi.txt"
  4. chaine = "_bh15w" # Texte à rechercher
  5. with open(fichier) as src:
  6.     for ligne in src:
  7.         if "dtable =" in ligne:
  8.             print(ligne)
  9.         if chaine in ligne:
  10.                     debut = ligne.find('("') #debut de la chaine
  11.                     fin = ligne.find('" )')+len('\" )') #fin de la chaine
  12.                     codage = ligne[debut:fin]
  13.                     ligne = ligne.lstrip()
  14.                     print (codage,"," )


 
J'arrive bien à récupérer mes variables mais si sur une même ligne j'ai deux fois la même chaine, il ne m'imprime que la première.
et pour finir je souhaiterai exporter ce fichier dans un fichier "lecture.txt"


Message édité par zombilamouche le 13-11-2014 à 10:50:14
Reply

Marsh Posté le 13-11-2014 à 13:03:26    

Il va donc falloir passer par le module 're' (=regex) :
 
Par exemple,

Code :
  1. [m.start() for m in re.finditer('test', 'test test test test')]


renvoie les index de "test" dans 'test test test test' et vaut donc :

Code :
  1. [0, 5, 10, 15]


 
Pour l'exportation, peut-être quelque chose comme :

Code :
  1. with open("myfile", 'w') as output:
  2.     output.write(data)


 
Avec 'data' contenant toute les lignes à exporter ?


---------------
rule #1 : trust the python
Reply

Marsh Posté le 13-11-2014 à 14:35:57    

Je confirme, le mieux c'est d'utiliser une regexp avec le module re
(D'ailleur c'est que tu es sous windows ? Car sans sortir python un bon vieux grep ça fera le boulot.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed