[Python]Convertir chaine de caractere

Résolu/Fermé
Utilisateur anonyme - 29 mars 2006 à 17:06
mrcrowley
Messages postés
51
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
23 décembre 2010
- 23 déc. 2010 à 23:25
Bonjour à tous
J'ai créé une liste qui récupère des données provenant d'un fichier texte. Les données sont des nombres mais lorsque je les copie dans ma liste, Python les prend pour des chaînes de caractères. Donc je ne peux pas les afficher en faisant un "plot".
Quelqu'un saurait comment faire pour corriger ce problème?
Merci
A voir également:

5 réponses

sebsauvage
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 653
29 mars 2006 à 17:52
ah... matplotlib, bonne petite librairie.


A vue de nez, tu fais un plot() par valeur.
Ce n'est pas ce qu'il faut faire.

Il faut faire un seul plot, et lui passer toutes les valeurs d'un coup.

Exemple:
from pylab import *
m = ['0.4', '0.41', '0.42', '0.43', '0.44', '0.45', '0.46', '0.47', '0.48', '0.49', '0.5', '0.51', '0.52', '0.53', '0.54', '0.55', '0.56', '0.57', '0.58', '0.59', '0.6', '0.61', '0.62', '0.63', '0.64', '0.65', '0.66', '0.67', '0.68', '0.69', '0.7', '0.71', '0.72', '0.73', '0.74', '0.75', '0.76', '0.77', '0.78', '0.79', '0.8', '0.81', '0.82', '0.83', '0.84', '0.85', '0.86', '0.87', '0.88', '0.89', '0.9', '0.91', '0.92', '0.93', '0.94', '0.95', '0.96', '0.97', '0.98', '0.99', '1', '1.01', '1.02', '1.03', '1.04', '1.05', '1.06', '1.07', '1.08', '1.09', '1.1', '1.11', '1.12', '1.13', '1.14', '1.15', '1.16', '1.17', '1.18', '1.19', '1.2'] 
matrice = map(float,m)
plot(matrice)
show()
7
Utilisateur anonyme
29 mars 2006 à 17:56
Yes merci !!!
C'était ça.
Un grand merci
Bonne soirée (et peut-être à demain :) )
0
sebsauvage
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 653
29 mars 2006 à 17:15
0.4 n'est pas un entier !

Donc il refuse de le convertir en entier, et lève une exception ValueError, ce qui est normal.
2
Utilisateur anonyme
29 mars 2006 à 17:21
Oui pardon, mais j avais aussi essayé avec float()...
Mais j ai trouvé mon erreur.
Merci quand même
0
Utilisateur anonyme
29 mars 2006 à 17:25
Ah ben en fait, non....
Voila la partie du code qui plante:
"def Plot(matrice_val_param) :
for t in matrice_val_param[0:] :
l = plot(float(t))
show()"

et la matrice en question :
['0.4', '0.41', '0.42', '0.43', '0.44', '0.45', '0.46', '0.47', '0.48', '0.49', '0.5', '0.51', '0.52', '0.53', '0.54', '0.55', '0.56', '0.57', '0.58', '0.59', '0.6', '0.61', '0.62', '0.63', '0.64', '0.65', '0.66', '0.67', '0.68', '0.69', '0.7', '0.71', '0.72', '0.73', '0.74', '0.75', '0.76', '0.77', '0.78', '0.79', '0.8', '0.81', '0.82', '0.83', '0.84', '0.85', '0.86', '0.87', '0.88', '0.89', '0.9', '0.91', '0.92', '0.93', '0.94', '0.95', '0.96', '0.97', '0.98', '0.99', '1', '1.01', '1.02', '1.03', '1.04', '1.05', '1.06', '1.07', '1.08', '1.09', '1.1', '1.11', '1.12', '1.13', '1.14', '1.15', '1.16', '1.17', '1.18', '1.19', '1.2']

Et enfin l'erreur : "AssertionError"
Une idée du problème?
0
sebsauvage
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 653
29 mars 2006 à 17:40
Tout dépend d'où se déclenche l'AssertionError.

Tu as la stacktrace complète ?
(avec le message d'erreur complet ?)


C'est probablement ta librairie de graphe qui n'aime pas les donnée que tu lui donne.
Si elle veut une matrice, elle exige peut-être qu'elle soit découpée en lignes.
2
Utilisateur anonyme
29 mars 2006 à 17:44
Voila le message entier :
"Traceback (most recent call last):
File "Search_char_1_3.py", line 133, in ?
Data = Read_File('test.mdm')
File "Search_char_1_3.py", line 75, in Read_File
Recover_Param(file_to_read, num_line_end_db, num_line_sharp, nb_param, param)
File "Search_char_1_3.py", line 119, in Recover_Param
Plot(matrice_val_param)
File "Search_char_1_3.py", line 127, in Plot
l = plot(tmp,'go-')
File "/opt/ActivePython-2.4/lib/python2.4/site-packages/matplotlib/pylab.py", line 2018, in plot
ret = gca().plot(*args, **kwargs)
File "/opt/ActivePython-2.4/lib/python2.4/site-packages/matplotlib/axes.py", line 2786, in plot
for line in self._get_lines(*args, **kwargs):
File "/opt/ActivePython-2.4/lib/python2.4/site-packages/matplotlib/axes.py", line 300, in _grab_next_args
yield self._plot_2_args(remaining, **kwargs)
File "/opt/ActivePython-2.4/lib/python2.4/site-packages/matplotlib/axes.py", line 229, in _plot_2_args
assert(iterable(y))
AssertionError"
Si tu y comprends quelque chose....
0
sebsauvage
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 653
29 mars 2006 à 17:09
maliste = ['12','47','22','74']
print [int(i) for i in maliste]

ou bien:
print map(int,maliste)

-2
Utilisateur anonyme
29 mars 2006 à 17:12
Merci mais j'avais déjà essayé et le résultat est :
"ValueError: invalid literal for int(): 0.4"
(0.4 est la première valeur de ma liste)
Je ne comprends pas l'erreur.....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Chelhydra
Messages postés
1
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
19 avril 2010

19 avril 2010 à 18:58
Bonjour! J'ai souvent le même problème, et j'ai trouvé une astuce qui tient plus du bricolage! Il faut élever le nombre au carré, pour indiquer à excel qu'il s'agit bien d'un nombre, puis extraire la racine carrée dans une cellule voisinel . Cela marche peut-être avec d'autres opérations plus simples. Il faut parfois rechercher et supprimer des espaces (fonction "cherche", ou "trouve"

Meilleurs sentiments
-3
mrcrowley
Messages postés
51
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
23 décembre 2010
15
23 déc. 2010 à 23:25
Bravo pour le remontage de topic de 4 ans ! :) ( moi aussi mais juste de quelques mois :P )

PS: ils parlaient du language de programmation Python, pas d'excel ^^'
0