Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#26 13-09-2009 20:21:35

Lutcho74
Membre
Lieu : Vitrolles
Inscription : 22-12-2008
Messages : 136
Site Web

Re : [Python]Mettre du texte dans une variable

re,


bon voilà le résultat pour le 1. :

Ceci est un texte accentué : en principe, les accents vont être sabrés et tu obtiendras une bouillie infâme

Ceci aussi est un texte accentué  et point de bouille infâme

Et pour le 2. et bien tu a ''bien vue'' mon texte n'était pas enregistré en UTF-8 mais en AINSI maintenant qu'il y est ça me met : \xc3\xa9  à la place de 'é'   ^^''

@+

PS : mais je ne comprend pas que va apporter le 1. ??? pourrait eu m'expliquer stp?

Dernière modification par Lutcho74 (13-09-2009 20:23:27)

Hors ligne

#27 13-09-2009 20:37:54

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : [Python]Mettre du texte dans une variable

Re,

ok ! Je vois, tu ne peux pas traiter un texte enregistré comme un simple :
print u"accentué"

Je viens de faire un essai.
J'ai enregistré un texte d'une ligne en UTF-8 via le Bloc-notes.
Puis je le charge à la suite du bout de code donné (flemme)...

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

print "Ceci est un texte accentué : en principe, les accents vont être sabrés et tu obtiendras une bouillie infâme"
print
print u"Ceci aussi est un texte accentué  et point de bouille infâme"

nom="bouillie.txt"
fichier=open(nom,'r')
L=fichier.readlines()
fichier.close()
a=L[0].strip("\n")
a= unicode(a,'UTF-8')
print a

Et ça sort propre...

@+

Hors ligne

#28 13-09-2009 20:45:05

Lutcho74
Membre
Lieu : Vitrolles
Inscription : 22-12-2008
Messages : 136
Site Web

Re : [Python]Mettre du texte dans une variable

Re,

Erf...

Ca sort impec si on laisse le texte dans une variable mais à partir du moment ou on le met dans une liste :

Ceci est un texte accentué : en principe, les accents vont être sabrés et tu obtiendras une bouillie infâme

Ceci aussi est un texte accentué  et point de bouille infâme
[u'\ufeff\xe9']

C'est très embêtant que je soit ''obligé'' de mettre mon texte dans une liste ! :(

@+

PS : j'arrive pas à comprendre ce que ça change le fait que ce soit ou non dans une liste ...

Dernière modification par Lutcho74 (13-09-2009 20:46:26)

Hors ligne

#29 13-09-2009 21:07:59

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : [Python]Mettre du texte dans une variable

Re,

Et après je revois ça demain...
Au chargement d'un fichier, tu charges ligne par ligne, et chaque ligne est une LISTE, il ne peut pas en être autrement...

Si ça t'embête tant que ça, tu peuxtoujours transformer une liste en chaine par chaine=str(L[0)]...

Mais avant, je te signale donc que lorsque j'écris L=fichier.readlines(), L est bien une liste et L[0] est le 1er élément de la liste...
Cependant, ensuite quand j'écris a=L[0].strip('\n'), a est une chaine et pas une liste...

Pour t'en convaincre, tape dans la console :
>>> L=["arthur\n"]
>>> type(L)
<type 'list'>
>>>

Maintenant continue en écrivant :
>>> a=L[0].strip('\n')
>>> type(a)
<type 'str'>
>>>

Je te laisse méditer...
Tu va pouvoir apprendre des choses à ton prof...

@+

Hors ligne

#30 14-09-2009 12:16:20

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : [Python]Mettre du texte dans une variable

Salut,

Bon, après vérification tu ne peux pas forcer une liste complète à être encodée en unicode :

Traceback (most recent call last):
  File "C:\Python26\accents.py", line 10, in <module>
    L= unicode(L,'utf-8')
TypeError: coercing to Unicode: need string or buffer, list found

Par contre, si L = unicode(L,'utf-8') est interdit, avec L=["chèvre", "problème"] (par ex)
tu peux tout à fait écrire :

>>> L=["chèvre", "infâme"]
>>> L[0] = unicode(L[0],'utf-8')
>>> L[1] = unicode(L[1],'utf-8')
>>>

Pourquoi ça marche ? Tu traite ta liste élément par élément et chaque élément est un string (chaîne)...
Donc 1ere remarque (parce que ton "c'est ermbêtant..." est rien moins que clair),  si tu veux conserver une liste, c'est tout à fait possible d'encoder la liste, mais élément par élément, après chargement de l'ensemble des éléments de la liste, ou au coup par coup...

Deuxième remarque. Si tu ne veux pas des listes (de toutes façons, lire un fichier, c'est ranger son contenu dans une LISTE), tu peux extraire chaque élément de la liste et le ranger dans une chaîne, ensuite tu peux même concaténer ces chaînes en une seule...
Je reprends ma liste tirée d'un fichier qui contenait deux mots (avec un retour à la ligne) :

>>> L=["chèvre\n", "infâme\n"]
>>> a,b = L[0].strip('\n'),L[1].strip('\n')
>>> a,b=unicode(a,'utf-8'),unicode(b,'utf-8')
>>> c=a+' '+b
>>> print c
chèvre infâme
>>>

Donc tu as la réponse à :
- Je veux utiliser des listes
- Je ne veux pas utiliser des listes.

@+

Hors ligne

#31 14-09-2009 20:28:34

Lutcho74
Membre
Lieu : Vitrolles
Inscription : 22-12-2008
Messages : 136
Site Web

Re : [Python]Mettre du texte dans une variable

lu',

Et ben...
Merci beaucoup pour cette dernière réponse qui je crois va m'être d'un grand recoure :)...
Très souvent tes connaissances me dépasse aussi bien en maths qu'en programmation ;) !
Bon j'ai pas testé pour l'instant par manque de temps mais si tout va bien je vais voir tous ça mercredi.

Bye

Dernière modification par Lutcho74 (14-09-2009 20:28:42)

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatorze moins un
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums