Bonjour,
J'ai un problème d'encodage lors de la transformation d'un tableau en un string grâce à un join() et je sais pas comment utiliser les encode() decode() pour régler ce problème. Voici le parcours du tableau:
1. J'ouvre un fichier:
Code :
- try:
- fileHTML = open(path,'r+') #on ouvre le fichier
- page = fileHTML.read().decode(fichierEncodage) #on décode ce que contient le fichier pour que le python sache comment interprété les caractères non ASCII
- except IOError, message: #erreur lors de l'ouverture
- print >> sys.stderr, 'File could not be opened:', message
- raw_input('Appuyez sur une touche...\n')
- sys.exit(1)
|
2. Ici je recherche un élément dans le fichier grâce à une expression régulière stockée dans elt.expr_rech
Code :
- for elt in elt_rech: #pour chaque élémént à rechercher,
- result=elt.expr_rech.findall(page) #on le recherche grâce à son expression régulière,
- if result: #et si il existe,
- elt.result = result #on le stock dans le champ résultat de la classe exprReg
|
3. J'ajoute ensuite une string (contenant mon résultat précédent) dans un tableau
Code :
- s.append('\t\t<%s>%s</%s>\n'%(elt.obj_rech,clean_elt(elt.result[i]),elt.obj_rech)) #on ajoute le résultat
|
4.Après plusieurs ajout, je join le tableau
Code :
- result_str = u''.join(s)
|
Je n'avais jusqu'ici aucun problème jusqu'à ce que le symbole € apparaisse dans une des string du tableau. Depuis j'ai comme erreur:
Code :
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 11: ordinal
- not in range(128)
|
J'ai essayé de jouer avec les encode() decode() mais je n'arrive as à bien les positionner pour faire le join.
J'arrive à afficher la variable page sans problème avec le code
Code :
- page.encode(fichierEncodage)
|
donc je suppose qu'il y a moyen d'afficher le symbole posant problème dans le tableau.
Merci pour votre aide!!
Message édité par Shadew le 08-11-2008 à 11:43:50