Soucis avec les accents et urlopen()
Résolu
Hakunamatatáaa
Messages postés
13
Statut
Membre
-
Hakunamatatáaa Messages postés 13 Statut Membre -
Hakunamatatáaa Messages postés 13 Statut Membre -
Bonjour à tous,
Je ne connais pas très bien le python nous dirons que je suis en train de l'apprendre par moi-même mais je rencontre un petit problème et je ne trouve pas vraiment la solution : / ça dois avoir avec le type d'encondage mais je sèche un peu là : /
exemple :
mon problème est qu'il ne récupère pas les accents quand je fais un
Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.
Je ne connais pas très bien le python nous dirons que je suis en train de l'apprendre par moi-même mais je rencontre un petit problème et je ne trouve pas vraiment la solution : / ça dois avoir avec le type d'encondage mais je sèche un peu là : /
exemple :
from urllib import *
page = urlopen("https://previmeteo.com/fr/2988507-meteo-paris.html")
content = page.read()
mon problème est qu'il ne récupère pas les accents quand je fais un
print content
Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.
A voir également:
- Soucis avec les accents et urlopen()
- E avec accent minuscule - Guide
- Pourquoi les accents circonflexes disparaissent dans mes messages ✓ - Forum Réseaux sociaux
- Comment mettre les accents dans les sms - Forum Samsung
- Problème avec les accents - Forum Samsung
- Signification 2 accents circonflexes - Forum Mail
3 réponses
Bonjour,
si j'ai bien compris ton problème, tu peux utiliser la bibliothèque HTMLParser pour transformer les HTMLEntities comme "& egrave;" en "è":
Bonne journée!
si j'ai bien compris ton problème, tu peux utiliser la bibliothèque HTMLParser pour transformer les HTMLEntities comme "& egrave;" en "è":
from HTMLParser import HTMLParser # ton code ici text = HTMLParser().unescape (content) print text
Bonne journée!
Merci pour ta réponse nidhogg :) hélas j'obtiens une erreur :(
Je ne sais pas si je me suis bien exprimé mais en gros quand je print content voila un exemple de ce que ça m'affiche :
et évidement je voudrais avoir les "é" "è" au lieu de ces "▒" que je ne sait même pas a quoi ça correspond c'est peut être juste le symbole quand y ne sait pas.
Bien à vous,
Hakunamatatáaa.
File "/home/pi/meteo.py", line 7, in meteo
text = HTMLParser().unescape (content)
File "/usr/lib/python2.7/HTMLParser.py", line 472, in unescape
return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 233: ordinal not in range(128)
Je ne sais pas si je me suis bien exprimé mais en gros quand je print content voila un exemple de ce que ça m'affiche :
<title>M▒t▒o gratuite Waterloo - Pr▒visions ▒ 7 jours pour ......
et évidement je voudrais avoir les "é" "è" au lieu de ces "▒" que je ne sait même pas a quoi ça correspond c'est peut être juste le symbole quand y ne sait pas.
Bien à vous,
Hakunamatatáaa.
Bon finalement j'ai trouvé sur ce site http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/
Si vous lisez une page HTML, l’encoding est souvent déclaré dans la balise META ou dans un header.
Et une fois que vous l’avez, il faut décoder le texte reçu.
La manière la plus simple de faire cela est :
votre_chaine = votre_chaine.decode('nom_du_codec')
et ça fonctionne niquel :)
Si vous lisez une page HTML, l’encoding est souvent déclaré dans la balise META ou dans un header.
Et une fois que vous l’avez, il faut décoder le texte reçu.
La manière la plus simple de faire cela est :
votre_chaine = votre_chaine.decode('nom_du_codec')
et ça fonctionne niquel :)