Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1642 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Extraire du float d'un fichier en .txt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraire du float d'un fichier en .txt

n°2261266
anaxagore1
Posté le 26-06-2015 à 10:47:06  profilanswer
 

Bonjour,
 
Cela fait déjà un moment que je cherche un moyen de transformer les données du fichier texte en float après lecture de celui-ci.
J'ai déjà regardé des sujets similaires mais même leurs résolution ne fonctionne pas chez moi. Je dois avoir fait une erreur de codage.
Voici mon code :
 
import matplotlib.pyplot as plt
from numpy import *
 
 
courbet=open("acqui5 (good)(T)(27sec).txt" )
 
courbev=open("acqui5 (good)(V)(27sec).txt" )
 
 
t = []
v = []
i = 0
um = 0.0006
freq = []
 
while i<=100 :
   
    textet = courbet.readline().rstrip('\n\r').split('\n')
    textev = courbev.readline().rstrip('\n\r').split('\n')
     
    print(textet,textev)
    t.append(textet)
    v.append(textev)
    i=i+1
 
 
print(v[1],v[2],v[3])
print(float(v[1]))
 
Les éléments en surplus sont là pour la suite. En gros la liste t représente le temps et v une tension. Donc un fichier txt pour le temps et un autre pour la tension. Le hic c'est que le résultat est sous la forme : ['0.0002'] par exemple avec les '.  
 
Merci d'avance pour vos lumières.

mood
Publicité
Posté le 26-06-2015 à 10:47:06  profilanswer
 

n°2261277
masklinn
í dag viðrar vel til loftárása
Posté le 26-06-2015 à 12:35:34  profilanswer
 

Le split('\n') n'a pas de sens: readline() va lire juste une ligne (avec caractères de fin de ligne), si tu split au lieu d'avoir une chaîne tu vas avoir une liste de 2 éléments (la partie avant la fin de ligne, et une chaîne vide pour la partie après la fin de ligne).

 

Si tu veux simplement retirer le caractère de fin de ligne, utilise juste .rstrip() sans donner de paramètre ça va enlever tous les "whitespace" finaux (espace, tabulation, fin de ligne), et ce n'est même pas utile: float() ignore les blancs ce bricolage n'a tout simplement pas lieu d'être

Code :
  1. >>> float('0.005\n')
  2. 0.005
 

Mais fondamentalement le code utilise mal Python: si tu veux récupérer les 100 premières lignes de chaque fichier, une meilleure manière de le faire serait:

Code :
  1. from itertools import islice
  2.  
  3. with open("acqui5 (good)(T)(27sec).txt", 'rb') as courbet:
  4.    t = list(islice(courbet, 100))
  5. with open("acqui5 (good)(V)(27sec).txt", 'rb') as courbev:
  6.    v = list(islice(courbev, 100))
 

Si les deux fichiers contiennent des floats, tu peux faire ta conversion pendant la lecture: au lieu de list, suffit d'utiliser map:

Code :
  1. from itertools import islice
  2.  
  3. with open("acqui5 (good)(T)(27sec).txt", 'rb') as courbet:
  4.    t = map(float, islice(courbet, 100))
  5. with open("acqui5 (good)(V)(27sec).txt", 'rb') as courbev:
  6.    v = map(float, islice(courbev, 100))
 


Message édité par masklinn le 26-06-2015 à 12:36:57

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2261278
anaxagore1
Posté le 26-06-2015 à 12:53:36  profilanswer
 

Et bien je ne saurais t'expliquer pourquoi mais sans le split j'obtiens bien le ['0.000x\n'] avec x un nombre quelconque. Avec le split le \n n'apparait plus.
Merci d'avoir pris du temps pour me répondre, j'ai noté les fonctions que tu utilises au cas où et qui m'ont l'air bien plus utiles que mon bricolage. Cependant mon soucis venait du fait que je créais une liste de liste donc il fallait chercher le float des v[i][0], ce qui fonctionne bien.
 
 
Encore merci à toi et bonne journée.

n°2261281
masklinn
í dag viðrar vel til loftárása
Posté le 26-06-2015 à 13:21:24  profilanswer
 

anaxagore1 a écrit :

Et bien je ne saurais t'expliquer pourquoi mais sans le split j'obtiens bien le ['0.000x\n'] avec x un nombre quelconque. Avec le split le \n n'apparait plus.


C'est normal. Split crée une liste (toujours) de tous les éléments sur les côtés du séparateur.

 

Donc si ta ligne est 0.0005\n, lst.append(line) va donner

Code :
  1. ['0.0005\n']


et lst.append(line.split('\n') va donner

Code :
  1. [['0.0005', '']]


(une liste contenant ce qui est avant le séparateur et ce qui est après, la partie après le séparateur étant vide)


Message édité par masklinn le 26-06-2015 à 13:21:54

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Extraire du float d'un fichier en .txt

 

Sujets relatifs
Besoin d'aide: parser un fichier javascriptRécupérer extension d'un fichier
Supprimer extension fichiertest si un fichier est déja ouvert ou non , HELP !!!
classe fichier SVPliste de fichiers dans un array trié par date : 3eme fichier non listé
ecrire la date et l'heure sur un fichier de sortieVBS copie de fichiers avec recherche de nom
Convertir un fichier Swf en fichier pour "écran de veille sous WindowsConvertir un fichier Swf en fichier pour "écran de veille sous Windows
Plus de sujets relatifs à : Extraire du float d'un fichier en .txt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR