Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

[Python]Convertir chaine de caractere

oreilledelest, le mercredi 29 mars 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

1

sebsauvage, le mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 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 mercredi 29 mars 2006 à 17:56:05
  • +2

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

Répondre à oreilledelest
Supprimer les accents avec PHPPour 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... www.commentcamarche.net/faq/sujet-8063-supprimer-les-accents-avec-php
Excel - Convertir fichier(s) CSV / XLSComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification... www.commentcamarche.net/faq/sujet-16109-excel-convertir-fichier-s-csv-xls
Python: Comparer chaines de caractères (Résolu)Bonjour, Comme indiqué dans le titre, je cherche à comparer des chaines de caractères. Pour être plus précis, je voudrais ne sélectionner que les données (récupérées dans une BDD) qui contienne un mot précis que je voudrais pouvoir définir. Malgré mes... www.commentcamarche.net/forum/affich-7449912-python-comparer-chaines-de-caracteres
Java :pb conversion chaine en dateBonjour, j'ai un probleme dans mon prgramme java . je voudrais convertir une chaine en Date. Date d = new Date(Interger.parseInt(s.subString(0,4)),Interger.parseInt(s.subString(6,7)),Interger.parseInt(s.subString(9,10))); j'ai le message : Java... www.commentcamarche.net/forum/affich-2359714-java-pb-conversion-chaine-en-date
[Python] Utf-8 une bonne fois pour toutesBonjour, J'ai un script qui repertorie les valeurs dans la base de registres. Lorsque python trouve un valeur entiere il récupère la valeure en tant qu'entiere. Mais j'ai besoin de concatenatener le nom de la clé et la valeur donc je convertis parfois... www.commentcamarche.net/forum/affich-1873300-python-utf-8-une-bonne-fois-pour-toutes
VBScript - Les fonctions de chaînes de caractèresLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes... www.commentcamarche.net/contents/vbscript/vbs-fonctions-chaines-caracteres.php3
Javascript - Les chaînes de caractèresQu'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... www.commentcamarche.net/contents/javascript/jschar.php3
Les chaînes de caractères en C++Qu'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... www.commentcamarche.net/contents/cpp/cppstring.php3