[Python] Problème avec le xhtml sous python..
Fermé
ABX-Dev0x86
Messages postés
5
Date d'inscription
dimanche 13 février 2011
Statut
Membre
Dernière intervention
18 février 2011
-
13 févr. 2011 à 19:09
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 18 févr. 2011 à 18:07
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 18 févr. 2011 à 18:07
A voir également:
- [Python] Problème avec le xhtml sous python..
- Citizen code python avis - Accueil - Outils
- Python generator - Télécharger - Sécurité
- Python retour à la ligne dans le code - Forum Python
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
6 réponses
ABX-Dev0x86
Messages postés
5
Date d'inscription
dimanche 13 février 2011
Statut
Membre
Dernière intervention
18 février 2011
16 févr. 2011 à 21:04
16 févr. 2011 à 21:04
Alors? Toujours personne pour m'aider?
=(
=(
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
Modifié par heyquem le 17/02/2011 à 01:08
Modifié par heyquem le 17/02/2011 à 01:08
Bonsoir,
Il n'y a pas grand monde qui fasse du Python ici.
Comment es-tu censé intervenir sur ton texte XHTML ?
Certains te diront qu'il faut utiliser un parseur, et dans le cas de XHTML il faut utiliser le module HTMLParser.
Mais un parser est une machinerie assez grosse, qu'on peut estimer plus ou moins inadaptée pour des traitements asez simples.
De ce fait, certains te diront qu'on peut tout aussi bien se débrouiller avec les expressions rationelles pour faire des choses simples. Ou même compiquées. Ca revient à créer soi même une sorte de parser, mais en plus simple, qui va faire exactement ce qu'on veut , sans avoir à étudier préalablement la machinerie d'un module qui est prévu pour faire bien plus que résoudre son propre petit problème.
J'ai un peu tendance à être dans cet esprit, car s'il faut apprendre le fonctionnement de quantités de modules spécialisés pour faire des choses de plusieurs domaines bien délimités, en plus de l'apprentissage du langage lui même, cela finit par faire des quantités énormes de données à assimiler et retenir. Mais c'est tout de même la logique naturelle dans une discipline (informatique) qui a pour but de parvenir à répondre à tous les besoins de traitement d'informations.
Il y en a même qui te diront que tu peux faire tes traitemenst sur ton texte avec les seuls outils des fonctions de base constituant le langage lui-même.: find(), partition(), etc.... Cela peut être une solution facile à réaliser, pour quelqu'un ne connaissant pas un module spécialisé ni les regexes.
Ainsi par exemple pour chercher le titre dans une balise <title>titre</title> au sein d'un texte ch , et le remplacer par "sniffé par ABX" , on peut faire:
S'il y a plusieurs balises, on itérera pour traiter chaque balise l'une après l'autre.
Avec une regex, on utilisera plutôt re.sub()
Il faudrait avoir plus de renseignements précis sur les traitements que tu veux faire: balises à modifier sont-elles nombreuses dans le texte ? quelle part de variabilité et quelle part de constantes dans ces balises et autour ?
Avoir un texte concret ne serait pas de trop.
Il n'y a pas grand monde qui fasse du Python ici.
Comment es-tu censé intervenir sur ton texte XHTML ?
Certains te diront qu'il faut utiliser un parseur, et dans le cas de XHTML il faut utiliser le module HTMLParser.
Mais un parser est une machinerie assez grosse, qu'on peut estimer plus ou moins inadaptée pour des traitements asez simples.
De ce fait, certains te diront qu'on peut tout aussi bien se débrouiller avec les expressions rationelles pour faire des choses simples. Ou même compiquées. Ca revient à créer soi même une sorte de parser, mais en plus simple, qui va faire exactement ce qu'on veut , sans avoir à étudier préalablement la machinerie d'un module qui est prévu pour faire bien plus que résoudre son propre petit problème.
J'ai un peu tendance à être dans cet esprit, car s'il faut apprendre le fonctionnement de quantités de modules spécialisés pour faire des choses de plusieurs domaines bien délimités, en plus de l'apprentissage du langage lui même, cela finit par faire des quantités énormes de données à assimiler et retenir. Mais c'est tout de même la logique naturelle dans une discipline (informatique) qui a pour but de parvenir à répondre à tous les besoins de traitement d'informations.
Il y en a même qui te diront que tu peux faire tes traitemenst sur ton texte avec les seuls outils des fonctions de base constituant le langage lui-même.: find(), partition(), etc.... Cela peut être une solution facile à réaliser, pour quelqu'un ne connaissant pas un module spécialisé ni les regexes.
Ainsi par exemple pour chercher le titre dans une balise <title>titre</title> au sein d'un texte ch , et le remplacer par "sniffé par ABX" , on peut faire:
pos1 = ch.find('<title>') + 7 pos2 = ch.find('</title>') newch = ch[0:pos1] + "sniffé par ABX" + ch[pos2:]
S'il y a plusieurs balises, on itérera pour traiter chaque balise l'une après l'autre.
Avec une regex, on utilisera plutôt re.sub()
Il faudrait avoir plus de renseignements précis sur les traitements que tu veux faire: balises à modifier sont-elles nombreuses dans le texte ? quelle part de variabilité et quelle part de constantes dans ces balises et autour ?
Avoir un texte concret ne serait pas de trop.
ABX-Dev0x86
Messages postés
5
Date d'inscription
dimanche 13 février 2011
Statut
Membre
Dernière intervention
18 février 2011
17 févr. 2011 à 22:19
17 févr. 2011 à 22:19
Au fait, mon programme est sensé modifier l'attribut d'une balise, mais c'est un attribut très précis.
Dès qu'il l'a trouvé, il doit modifier la valeur de celui-ci.
Par exemple:
il doit trouver l'attribut heu... disons action="www.jesaispastropcequonestsensséymettre.com" et modifier ce truc en action="www.unautretruc.com"
Tu vois plus ou moins ce que je veux dire?
Dès qu'il l'a trouvé, il doit modifier la valeur de celui-ci.
Par exemple:
il doit trouver l'attribut heu... disons action="www.jesaispastropcequonestsensséymettre.com" et modifier ce truc en action="www.unautretruc.com"
Tu vois plus ou moins ce que je veux dire?
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
18 févr. 2011 à 00:26
18 févr. 2011 à 00:26
Oui je vois.
Mais relis ton post, et essaie de trouver la réponse à cette question: où se trouve la balise contenant cet attribut ?
- dans un texte en mémoire lors d'un traitement qui ne va pas nécessiter une inscription du résultat sur un disque dur ?
- ou dans un fichier qui se trouve sur DD ?
- ou au supermarché, rayon fruits et légumes ?........
Je dis ça parce que selon le cas, il faut envisager les choses différemment. S'il faut changer un attribut se trouvant dans un fichier sur un disque, ça va entrainer des manipulations de fichier, et on manipule différemment selon les cas.
Quand tu dis que l'attribut est précis, tu veux dire qu'il est unique, ou qu'il a une identité précise mais se retrouve plusieurs fois dans le texte ?
Mais relis ton post, et essaie de trouver la réponse à cette question: où se trouve la balise contenant cet attribut ?
- dans un texte en mémoire lors d'un traitement qui ne va pas nécessiter une inscription du résultat sur un disque dur ?
- ou dans un fichier qui se trouve sur DD ?
- ou au supermarché, rayon fruits et légumes ?........
Je dis ça parce que selon le cas, il faut envisager les choses différemment. S'il faut changer un attribut se trouvant dans un fichier sur un disque, ça va entrainer des manipulations de fichier, et on manipule différemment selon les cas.
Quand tu dis que l'attribut est précis, tu veux dire qu'il est unique, ou qu'il a une identité précise mais se retrouve plusieurs fois dans le texte ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ABX-Dev0x86
Messages postés
5
Date d'inscription
dimanche 13 février 2011
Statut
Membre
Dernière intervention
18 février 2011
18 févr. 2011 à 17:30
18 févr. 2011 à 17:30
La première solution serait préférable, mais s'il faut, je peux toujours faire en sorte qu'il copie le .html quelque part et qu'il le modifie, cela m'est égal...
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
Modifié par heyquem le 18/02/2011 à 18:07
Modifié par heyquem le 18/02/2011 à 18:07
Quelle première solution ?
Premier cas, tu veux dire ? C'est à dire un texte dans un fichier sur disque dur?
Tu as du mal à être explicite...
Et du mal à être logique aussi: si tu copies le .html quelque part, c'est avant que tu vas le modifier, pas "faire en sorte qu'il copie le .html quelque part et qu'il le modifie" ensuite
Au fait , c'est du html ou du xhtml ?
Je ne sais que te dire de plus, je n'ai rien de concret à voir pour le moment. Montre un bout de code
Premier cas, tu veux dire ? C'est à dire un texte dans un fichier sur disque dur?
Tu as du mal à être explicite...
Et du mal à être logique aussi: si tu copies le .html quelque part, c'est avant que tu vas le modifier, pas "faire en sorte qu'il copie le .html quelque part et qu'il le modifie" ensuite
Au fait , c'est du html ou du xhtml ?
Je ne sais que te dire de plus, je n'ai rien de concret à voir pour le moment. Montre un bout de code