VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[Python]Convertir chaine de caractere [Résolu]

oreilledelest 500Messages postés 18 mai 2005Date d'inscription - Dernière réponse le 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
Lire la suite 

[Python]Convertir chaine de caractere »

11 réponses
Réponse
+2
moins plus
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()
oreilledelest- 29 mars 2006 à 17:56
Yes merci !!!
C'était ça.
Un grand merci
Bonne soirée (et peut-être à demain :) )
Ajouter un commentaire
Réponse
+0
moins plus
maliste = ['12','47','22','74']
print [int(i) for i in maliste]

ou bien:
print map(int,maliste)

oreilledelest- 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.....
Ajouter un commentaire
Réponse
+0
moins plus
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.
oreilledelest- 29 mars 2006 à 17:21
Oui pardon, mais j avais aussi essayé avec float()...
Mais j ai trouvé mon erreur.
Merci quand même
oreilledelest- 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?
Ajouter un commentaire
Réponse
+0
moins plus
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.
oreilledelest- 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....
Ajouter un commentaire
Réponse
-4
moins plus
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
mrcrowley- 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 ^^'
Ajouter un commentaire
Ce document intitulé « [Python]Convertir chaine de caractere » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?