Signe non reconnu dans une boucle [Résolu] - Python - Programmation
Marsh Posté le 15-08-2006 à 22:58:13
et si tu remplaçais '\' par '\\'?
(accessoirement, c'est assez pourri comme méthode )
Marsh Posté le 15-08-2006 à 23:06:31
Ce n'est pas le '\' mais bien le '²' qui me pose problème.
Dans le résultat 'la variable contient ²' le '\' a bien été exclut.
Marsh Posté le 15-08-2006 à 23:10:46
magicdvil a écrit : Ce n'est pas le '\' mais bien le '²' qui me pose problème. |
T'es gentil jeanlouis, mais '\' c'est un caractère d'échappement dans les strings Python (et dans les strings de la majorité des langages accessoirement), donc tu fais ce que je te demande et après on voit pour le reste
Marsh Posté le 15-08-2006 à 23:25:40
Mais bien sûr Ben-Hur que je suis gentil , pour ton information, dans la variable il y a un espace entre chaque caractères après le 'contient' d'où le '\' n'est pas un caractère d'échappement mais bien un caractère à par entière
Marsh Posté le 23-08-2006 à 17:30:50
Euh, tu a mis la déclaration d'encodage UTF-8 dans ton fichier, est tu sur et certain à 100% que ton fichier soit au format UTF-8 ?
Si oui, cherche pas plus loin, converti toutes tes chaines de charactère en unicode et teste à nouveau ( remplace les '...' par u'...' )
Marsh Posté le 23-08-2006 à 21:46:17
bonjour,
j'ai remplacé la variable "liste" par ceci : [u'²',u'/',u'\\',u':',u'*',u'?',u'"',u'<',u'>',u"|"]
resultat : UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
Marsh Posté le 23-08-2006 à 22:42:12
Remplace toutes les chaînes de la même façon. Tout unicode ou rien unicode Fait le aussi pour v et pour les 2 lignes if '²' in
Pas besoin pour les print
Marsh Posté le 23-08-2006 à 22:47:00
Merci Kristoph pour cette aide efficace, problème résolu.
Marsh Posté le 23-08-2006 à 22:52:09
Au fait, as tu compris pourquoi tu avais ton erreur dans la première version ?
Marsh Posté le 24-08-2006 à 07:12:59
Malheureusement non, et je cherche aussi une commande ou un moyen de transformer la variable "v" en unicode
Marsh Posté le 24-08-2006 à 09:45:58
Bah en fait, ton fichier code source est en UTF-8. Ceci veux dire que tous les charactères non ASCII ( ASCII le vrai, celui avec comme numero de symbole < 128 ) sont codés sur 2 octets au moins. Quand tu fais alors for e in v: au moment de passer sur le ², tu vas en fait faire 2 iterations ( au moins ), une pour le charactère d'échapement UTF-8, l'autre pour le charactère qui va représenter ². Malheureusement, aucun de ces 2 charactères ne va passer le test de if e in liste:, seule la concaténation de ces 2 charactères le peut.
Et pour convertir une chaine de charactère en unicode, c'est très facile. Si la chaine est en utf-8, tu fait chaine.decode('utf-8'), si elle est en latin1 tu fais chaine.decode('latin1') et si elle est en vrai ASCII, il suffit de faire unicode(chaine) ou chaine.decode('ascii')
Marsh Posté le 24-08-2006 à 09:53:35
Merci pour tout, je suis au boulot actuellement, je teste cela se soir.
Marsh Posté le 15-08-2006 à 22:00:09
bonjour,
je cherche à exclure certains éléments d'une variable grace à une boucle et une liste pour
crée une nouvelle variable sans ces éléments
résultat :
la variable contient ²
² est dans la liste
² est dans la variable
L'élément '²' est bien reconnu dans la variable ainsi que dans la liste.
Pourquoi pas dans la boucle ?
Message édité par magicdvil le 23-08-2006 à 22:47:58