Rechercher : dans
Par :

[Python]Convertir chaine de caractere

Dernière réponse le 29 mar 2006 à 17:56:05 oreilledelest, le 29 mar 2006 à 17:06:26 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Python]Convertir chaine de caractere » dans :
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...

1

sebsauvage, le 29 mar 2006 à 17:09:44

maliste = ['12','47','22','74']
print [int(i) for i in maliste]

ou bien:
print map(int,maliste)

Répondre à sebsauvage

2

oreilledelest, le 29 mar 2006 à 17:12:31

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.....

Répondre à oreilledelest

3

sebsauvage, le 29 mar 2006 à 17:15:57

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.

Répondre à sebsauvage

4

oreilledelest, le 29 mar 2006 à 17:21:55

Oui pardon, mais j avais aussi essayé avec float()...
Mais j ai trouvé mon erreur.
Merci quand même

Répondre à oreilledelest

5

oreilledelest, le 29 mar 2006 à 17:25:57

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?

Répondre à oreilledelest

6

sebsauvage, le 29 mar 2006 à 17:40:41

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.

Répondre à sebsauvage

7

oreilledelest, le 29 mar 2006 à 17:44:32

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....

Répondre à oreilledelest

8

sebsauvage, le 29 mar 2006 à 17:52:23

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()

Répondre à sebsauvage

9

 oreilledelest, le 29 mar 2006 à 17:56:05
  • +1

Yes merci !!!
C'était ça.
Un grand merci
Bonne soirée (et peut-être à demain :) )

Répondre à oreilledelest