Pb de chaîne

Le
Etienne Rousee
Bonjour,

Avec IDLE, la chaîne u') Nombre d'itérations = ' passe.
Par contre, avec Eclipse et Pydev, le é ne passe plus.
Que dois je faire ?

--

Etienne
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #22226681
Etienne Rousee a écrit :
Bonjour,

Avec IDLE, la chaîne u') Nombre d'itérations = ' passe.
Par contre, avec Eclipse et Pydev, le é ne passe plus.
Que dois je faire ?



D'abord apprendre à poster une description précise du symptôme (avec
copie du message d'erreur et du traceback s'il y en a). "ne passe plus",
c'est un peu court...
Etienne Rousee
Le #22228361
Le 08/06/2010 13:47, Bruno Desthuilliers a écrit :
Etienne Rousee a écrit :
Bonjour,

Avec IDLE, la chaîne u') Nombre d'itérations = ' passe.
Par contre, avec Eclipse et Pydev, le é ne passe plus.
Que dois je faire ?



D'abord apprendre à poster une description précise du symptôme (avec
copie du message d'erreur et du traceback s'il y en a). "ne passe plus",
c'est un peu court...



Mon code contient l'instruction:

plt.ylabel('Maximum = (' + str(kmax) + ' ; ' + str(nmax)
+ u') Nombre d'itérations = '
+ str(k))

Après avoir fait en tête de fichier:

import matplotlib.pyplot as plt

L'erreur est:

SyntaxError: Non-ASCII character 'xe9' in file C:Documents and
SettingsutilworkspaceVracsrcCollatz.py on line 53, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details

Je n'ai pas compris grand chose à la page indiquée.

Et je voudrais bien pouvoir utiliser les caractères accentués.

Merci d'avance.

--

Etienne
danieldelay
Le #22228411

L'erreur est:

SyntaxError: Non-ASCII character 'xe9' in file C:Documents and
SettingsutilworkspaceVracsrcCollatz.py on line 53, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details



Bonjour,

Il faut regarder dans les options de ton éditeur l'encodage de caractère
qu'il utilise, par exemple "utf-8", et indiquer cet encodage au tout
début de ton fichier python en rajoutant une ligne du genre

# -*- coding: utf-8 -*-

(l'encodage utf-8 est conseillé, il devient l'encodage par défaut dans
python 3)

Daniel
Etienne Rousee
Le #22228631
Il faut regarder dans les options de ton éditeur l'encodage de caractère
qu'il utilise, par exemple "utf-8", et indiquer cet encodage au tout
début de ton fichier python en rajoutant une ligne du genre

# -*- coding: utf-8 -*-

(l'encodage utf-8 est conseillé, il devient l'encodage par défaut dans
python 3)



Merci beaucoup, ça marche.

--

Etienne
Bruno Desthuilliers
Le #22230181
Etienne Rousee a écrit :
(snip)

D'autres t'on déjà répondu pour l'encodage donc pb résolu. Je me permet
une ou deux petites suggestions au passage:


plt.ylabel('Maximum = (' + str(kmax) + ' ; ' + str(nmax)
+ u') Nombre d'itérations = '



Tu n'a pas besoin d'utiliser une chaine unicode ici. Mais si tu veux
utiliser de l'unicode, au moins fait le partout - au lieu de concaténer
unicode et str !-)

Egalement, utiliser des double quotes t'évite de devoir échapper les
simples quote.

+ str(k))




Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)

HTH
Etienne Rousee
Le #22232121
Le 09/06/2010 09:58, Bruno Desthuilliers a écrit :
Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)



D'accord, c'est plus lisible et je préfère.
Le problème est que ça ne fonctionne pas.
J'obtiens deux petits carrés à la place du é.
J'utilise Python 2.6.5 avec Eclipse.

--

Etienne
Bruno Desthuilliers
Le #22234881
Etienne Rousee a écrit :
Le 09/06/2010 09:58, Bruno Desthuilliers a écrit :
Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)



D'accord, c'est plus lisible et je préfère.
Le problème est que ça ne fonctionne pas.
J'obtiens deux petits carrés à la place du é.



Où ça ? Lors de l'affichage de ce label à l'exécution, ou dans ton
éditeur de code ? Désolé de devoir poser la question, mais ma boule de
cristal est chez le garagiste pour la révision annuelle...

Anyway : t'a un problème d'encodage. Vérifie déjà que l'encodage de ton
fichier source est correctement déclaré (c'est à dire que la déclaration
correspond à l'encodage effectif). Après, regarde la doc de l'outil
concerné (éditeur de code ou bibliothèque utilisée) selon l'endroit où
apparait ton pb.
Etienne Rousee
Le #22237761
Le 10/06/2010 10:06, Bruno Desthuilliers a écrit :
Etienne Rousee a écrit :
Le 09/06/2010 09:58, Bruno Desthuilliers a écrit :
Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)



D'accord, c'est plus lisible et je préfère.
Le problème est que ça ne fonctionne pas.
J'obtiens deux petits carrés à la place du é.



Où ça ? Lors de l'affichage de ce label à l'exécution, ou dans ton
éditeur de code ?



A l'exécution, bien sûr.


Anyway : t'a un problème d'encodage. Vérifie déjà que l'encodage de ton
fichier source est correctement déclaré (c'est à dire que la déclaration
correspond à l'encodage effectif). Après, regarde la doc de l'outil
concerné (éditeur de code ou bibliothèque utilisée) selon l'endroit où
apparait ton pb.



Dans Eclipse, j'ai mis utf-8 dans Edit - Set encoding ainsi que
dans Project - Text file encoding.
Et j'ai rajouté la ligne # -*- coding: utf-8 -*-
au début du fichier.
J'ai du oublier quelque chose, mais quoi ?
Par contre, ces modifications ont été suffisantes pour mon
ancien code, avec les str.

Eclipse utilise pydev. Peut-être y a-t-il un rapport ?

--

Etienne
Etienne Rousee
Le #22237831
Le 10/06/2010 10:06, Bruno Desthuilliers a écrit :
Anyway : t'a un problème d'encodage. Vérifie déjà que l'encodage de ton
fichier source est correctement déclaré (c'est à dire que la déclaration
correspond à l'encodage effectif). Après, regarde la doc de l'outil
concerné (éditeur de code ou bibliothèque utilisée) selon l'endroit où
apparait ton pb.



J'ai aussi mis utf-8 dans Windows → Preference → General → workspace
et j'ai rajouté la ligne -Dfile.encoding=UTF-8 dans eclipse.ini
Rien n'y fait.

--

Etienne
Etienne Rousee
Le #22237971
Le 10/06/2010 10:06, Bruno Desthuilliers a écrit :

Bon, la ligne:

plt.ylabel(u"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax,
nmax, k))

au lieu de :

plt.ylabel("Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax,
k))

fonctionne, donc EOT, je suppose ...

Merci à vous deux.

--

Etienne
Publicité
Poster une réponse
Anonyme