IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut Python: certaines REGEX ne fonctionnent pas si une chaîne ne commence pas et ne se termine pas par le même car
    Python: certaines REGEX ne fonctionnent pas si une chaîne ne commence pas et ne se termine pas par le même caractère


    J'ai un petit problème avec Python et Regex. En fait, certaines expressions régulières ne fonctionnent pas si une chaîne ne commence pas et ne se termine pas par le même caractère. Par exemple j'ai ces balises html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pattern1 = r'<p class="text_obisnuit">.*((bebe|oana|mother|sun).*){3,}.*</p>'
    pattern2 = r'<p class="text_obisnuit2">.*((bebe|oana|mother|sun).*){3,}.*</p>'
    pattern3 = r'<title>.*((bebe|oana|mother|sun).*){3,}.*</title>'
    pattern4 = r'<meta name="description" content=.*((bebe|oana|mother|sun).*){3,}.*>'
    Les 3 premières balises fonctionnent, car une chaîne commence et se termine par le même caractère.

    Mais la balise 4, celle avec la méta description, ne fonctionne pas. Python ne trouve rien avec l'expression régulière.

    Mon code doit trouver et traduire uniquement les balises qui contiennent au moins 3 des mots-clés que j'ai mis dans le Regex. Dans l'exemple ci-dessus, dans la balise meta description, il y a 3 mots-clés qui sont également dans la formule regex : bebe|oana|mother. Les 3 premières regex fonctionnent, je les teste, mais seule la 4 regex est ignorée par Python. Je ne sais pas pourquoi, mais je crois que c'est parce que la formule regex doit commencer et se terminer par la même chaîne. Par exemple, dans la balise title, regex commence par <title> et se termine par </title> .

  2. #2
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut
    je trouve la solution. L'expression régulière essayait de traduire tout le contenu interne des balises, mais la partie contenu de la balise meta n'est pas un contenu interne. J'ai dû faire une vérification séparée pour voir s'il s'agissait d'une balise meta, puis j'ai fait une traduction spécifiquement pour la balise meta sous cette vérification.

    Donc, après ces regex, vous devez ajouter ce code*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     for pattern in patterns:
                    for x in re.finditer(pattern, page):
                        updated = True
                        new = x.group(0)
                        soup = BeautifulSoup(new, 'html.parser')
                        if pattern != pattern4:
                            recursively_translate(soup)
                        else:
                            meta = soup.find('meta')
                            meta['content'] = translator.translate(meta['content'], dest=destination_language).text
                        soup = soup.encode(formatter=UnsortedAttributes()).decode('utf-8')
                        page = page.replace(new, soup)

Discussions similaires

  1. Ma regex ne fonctionne pas
    Par moimp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/09/2017, 09h19
  2. [Python 3.X] Lancement Python en PHP ne fonctionne pas
    Par Geo-x dans le forum Général Python
    Réponses: 2
    Dernier message: 17/10/2016, 13h24
  3. Certains EXE ne fonctionnent pas
    Par eveilside dans le forum Windows XP
    Réponses: 4
    Dernier message: 25/03/2016, 14h35
  4. [RegEx] Mon regex ne fonctionne pas..la variable retourne Array
    Par joboy84 dans le forum Langage
    Réponses: 1
    Dernier message: 09/06/2008, 18h11
  5. [Debutant][Listener] Certains listener ne fonctionnent pas?
    Par seb_asm dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 28/04/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo