Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#26 13-09-2009 20:21:35
Re : [Python]Mettre du texte dans une variable
re,
bon voilà le résultat pour le 1. :
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)...
# -*- 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
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 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 :
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[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) :
>>> 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
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







