extraction de donné, help

extraction de donné, help - Python - Programmation

Marsh Posté le 03-05-2004 à 12:32:40    

:hello: ,
j ai la fonction suivante :

Code :
  1. def findextract(h, keywords, context=20):


 
qui dois regarder pour le premier mot cle trouve dans le string contenu dans <body></body>
 
h etant un objet Htmlparser, en gros quand je fais h.title il me renvoie la string qui il y avait entre <title> et pareille pour body ect..
 
keyword contient une liste de mot cle ['test','paragraph']
contexext : cest le nombre de lettres apres et avant le mot cle que je dois integrer a la reponse.
 
 
exemble du code html :

Code :
  1. <html>
  2.           <head>
  3.             <title>This is a test</title>
  4.             <meta name = "description"
  5.                   content = "a test page">
  6.             <meta name = "keywords"
  7.                   content = "keyword1 keyword2">
  8.           </head>
  9.           <body>
  10.             <h1>The first title</h1>
  11.             <p align="center">A (simple, intuitive) paragraph: has some
  12.             non-alphanumeric characters.</p>
  13.           </body>
  14.         </html>


 
et la fonction dois me renvoyer :

Code :
  1. ntuitive) paragraph: has some


 
jai commence comme ca :

Code :
  1. if not h.body :
  2.         return 'empty page'
  3.     else :
  4.         body_data = h.body.strip()
  5.         for element in keywords :
  6. //


et la je pense utiliser une expression reguliere pour extraire le mot recherche (element) si il renvoie rien on continu sinon on arrete et on renvoie le mot +- 20 lettres.
 
autre chode que les expresions reguliere dans ce cas ?
 :jap:


Message édité par xiluoc le 03-05-2004 à 14:22:30
Reply

Marsh Posté le 03-05-2004 à 12:32:40   

Reply

Marsh Posté le 03-05-2004 à 12:48:08    

rhoo je suis un boulet je viens de voir un topic sur les strign je savais pas que "in" marchait aussi pour ca ...
 
reste plus quas trouver +- 20 char

Reply

Marsh Posté le 03-05-2004 à 13:54:23    

Code :
  1. if not h.body :
  2.         return 'empty page'
  3.     else :
  4.         body_data = h.body.strip()
  5.         for element in keywords :
  6.             if element.lower() in body_data.lower()  :
  7.                 begin_index = body_data.find(element)
  8.                 result = body_data [begin_index-10:begin_index+len(element)+10]
  9.                 return result

Reply

Marsh Posté le 03-05-2004 à 14:19:30    

hum parcontre j ai un autre pb :
 

Code :
  1. string = "(word1 & (Word2|woRd3))"


je veus une liste contenant word1 word2 word3
 

Code :
  1. return re.split('\W+',string .lower())


me donne ['','word1','word2',word3','']
je pourrais utiliser [-1:1] mais si jamais string est different ca risque de virer un word.
 
je coince :/

Reply

Marsh Posté le 03-05-2004 à 14:38:05    

Reply

Marsh Posté le 03-05-2004 à 14:39:56    

laisse tomber. utilise les expressions régulières

Reply

Marsh Posté le 03-05-2004 à 15:03:25    

est que l utilisation dune expression reguliere sera plus rapide que la vilaine methode que j utilise : verifie que "element" != '' et si oui l ajoute a une list neuve ?

Reply

Marsh Posté le 03-05-2004 à 15:05:17    

parce que ça prends beaucoup moins de code,q ue ça se comprends plus vite, que c'est certainement plus rapide, et que c'est comme ça qu'on fait pour parser du html (si on a pas de parser)

Reply

Sujets relatifs:

Leave a Replay

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