Récupération données fichier texte

EatFresh Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

Merci d'avance pour votre temps. Dans le cadre de mes études j'en suis venu à mesurer la concentration de paracétamol dans une gélule par chromatographie HPLC_UV. l'objectif est de retrouver les valeurs données par le logiciel intégré grâce à un programme en Python. J'ai récupéré des données brutes dans un fichier au format .arw puis sauvegardé en fichier .text, de la forme :

0.02966667,1.067428e-005
0.04633333,1.014129e-005
0.063,-3.494247e-005

L'objectif serait de stocker les deux termes dans des listes séparées puis de tracer la courbe. Voici mon programme qui ne marche pas, l'erreur est sur la conversion string -> float

Pourriez-vous m'aider ?

from os import chdir
chdir("D:\DonnéesChromatoTipe2015\data raphael")
from numpy import*
import matplotlib.pyplot as plt

fic=open("16838-3.txt","r")                             #ouverure du [/contents/456-txt-fichier-txt fichier texte]
texte=fic.readlines()                                       #lecture de toutes les lignes du fichier
fic.close()


T=[]                                                              #initialisation des variables
X=[]
L=len(texte)


for i in range (0,L) :                                       #Stockage dans les listes
    ligne=texte[i].rstrip("\n")                           #Suppression passage à la ligne
    ligne=ligne.split(",")
    X.append(ligne)
    T.append(ligne)
    i=i+1
print(T,X)


# Tracé de la courbe

plt.plot(T,X)
plt.grid(True)
plt.show()




Merci
A voir également:

2 réponses

Utilisateur anonyme
 
Le problème vient sûrement du e-005. Il y a deux solutions : soit tu t'arrange à sauvegarder tes valeurs sans le e soit tu crées un programme qui prend en entrée la valeur avec le e et qui renvoie en sortie un nombre. Par exemple : conversion(3e-002) = 0.02. Il suffit juste de détecter le e puis prendre ce qu'il y a à droite le convertir en un nombre gérable (supprimer les 0 devant) puis le passer en exposant. C'est faisable.
0
EatFresh Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour ta réponse rapide. D'accord je transformerais ces nombres pour que Python les acceptent.
Autre chose : je ne m'en sors pas avec les lignes 19 et 20 pour ajouter les éléments aux listes X e T,
- à chaque boucle ligne est bien un tableau de deux valeurs non ?
- pourquoi ligne[1] renvois l'erreur index out of range alors ?
0
Utilisateur anonyme
 
Normalement, tu as raison. C'est bien un tableau de deux éléments. Fais un print(ligne) au niveau de la boucle pour voir ce qu'il se passe à chaque étape.
0
EatFresh Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Un print(ligne) me renvoie [ '3,00...' , ' 4,000' ] par exemple. Est ce que le fait que les valeurs sont entre ' peut pose problème ?
0
Utilisateur anonyme
 
Les guillemets permettent de définir une chaîne de caractère (string ou str). Si le programme te dit pour ligne[1] out of range, c'est qu'il y a une liste qui contient 1 élément au plus. As-tu bien vérifier toutes les valeurs ?
0
EatFresh Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, merci de ton temps, avec les oraux qui arrivent je n'ai pas eu le temps de me consacrer au programme jusqu'à aujourd'hui. Si cela t'intéresse j'ai trouvé une solution, qui n'est surement pas la meilleure...:
-Transformer le fichier en remplaçant les ',' par des '.' pour passer dans le format anglo-saxon et les ';' par des espaces.
-Modifier le programme pour séparer ligne au niveau des espaces.
La courbe souhaitée est bien affichée !!
Merci pour tes réponses,
Bonne Journée
0
Utilisateur anonyme
 
0.02966667,1.067428e-005
0.04633333,1.014129e-005
0.063,-3.494247e-005

Pour moi, tu as utilisé des points et non des virgules pour les nombres décimaux et il n'y a pas de point virgule mais des virgules pour séparer ... J'aurais peut-être pu débogger ça avant du coup
0