Maison  >  Article  >  développement back-end  >  Comment corriger \'TypeError : impossible d'utiliser un modèle de chaîne sur un objet de type octets dans re.findall()\' ?

Comment corriger \'TypeError : impossible d'utiliser un modèle de chaîne sur un objet de type octets dans re.findall()\' ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 17:54:03228parcourir

How to Fix

Erreur : TypeError : Impossible d'utiliser le modèle de chaîne sur un objet de type octets dans re.findall()

Problème : Lors de la tentative d'analyse titres de pages Web utilisant des expressions régulières, vous rencontrez une erreur indiquant : "TypeError : impossible d'utiliser un modèle de chaîne sur un objet de type octets dans re.findall()."

Solution :

En Python, lorsqu'il s'agit de données téléchargées comme HTML, il est crucial de convertir des objets de type octets (tels que la variable 'html') en chaînes pour correspondre aux modèles de chaîne. Pour résoudre cette erreur, vous devez décoder la variable 'html' à l'aide de la méthode '.decode()' avant d'appliquer le modèle d'expression régulière.

Code :

with urllib.request.urlopen(url) as response:
    html = response.read()
    html = html.decode('utf-8')  # Decode the HTML to a string

title = re.findall(pattern, html)

Explication :

  • La méthode '.read()' renvoie un objet de type octet.
  • '.decode()' convertit les octets -like dans une chaîne codée en UTF-8.
  • Vous pouvez maintenant utiliser le modèle de chaîne dans votre expression régulière pour extraire le titre de la page.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn