Traiter un tableau en .txt sur python

Le problème exposé dans ce sujet a été résolu.

Bonjour, Je dois traiter un tableau de ce type:

X Y Z

-0,283128325 0,000633593 0

-0,282837415 0,000719592 0

-0,282507431 0,000800225 0

-0,282139745 0,000875281 0

je dois enfaite tracer une courbe en fonction des x et y, et je souhaitais principalement savoir comment attribuer à x une liste de chaque terme de ce tableau ainsi qu'à y. Merci de votre aide.

+0 -0

Sur chaque ligne, tu fais un split afin de séparer au niveau de l'espace, puis tu convertis en float et tu stockes dans une list ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
x, y, z = [], [], []
with open("tab.txt") as f:
    for line in f:
        line = line.strip().replace(',', '.')
        if len(line) == 0:
            continue
        tmp = list(map(float, line.split()))
        x.append(tmp[0])
        y.append(tmp[1])
        z.append(tmp[2])
# print(x, y, z, sep='\n')
+1 -0

le but étant de stocker dans une liste afin de tracer une courbe. est-ce que tu pourrais m'expliquer ce que tu as fait. Parce que je connais pas la moitié des fonctions que tu as utilisé. Ps j'ai le message d'erreur: ValueError: could not convert string to float: 'ÿþX\x00'

+0 -0

Dans l'ordre :

  • je crée trois tableaux qui vont stocker (dans l'ordre) les triplets $(x, y, z)$ ;
  • pour chaque ligne du fichier :
    • j'enlève les '\n' de fin de ligne et je remplace les virgules en points (pour la conversion en flottants) ;
    • si la ligne est vide, je ne fais pas la suite ;
    • à l'aide de split(), je coupe la ligne aux espaces (donc j'ai une liste [x, y, z]), ensuite j'envoie cette liste dans la fonction map qui applique la fonction float sur chaque variable (donc je transforme la liste de chaînes de caractères en une liste de nombre décimaux) et je m'assure que c'est bien une liste en renvoyant tout ça dans la fonction list ;
    • et pour finir, vu que ma liste est [x, y, z], j'ajoute le nouveau x à la fin du tableau des x, le dernier y au tableau des y, et le dernier z au tableau des z.

Pour ton message d'erreur, est-ce que tu as la ligne X Y Z dans ton fichier ?

+1 -0

Pourrais-tu également donner l'encodage du fichier ? Par défaut, Python 3 travaille avec de l'UTF-8 (je ne sais pas pour Python 2).

Si Python te sort ÿþ-\x000\x00.\x002\x008\x003\x001\x002\x008\x003\x002\x005\x00 c'est qu'il n'arrive pas à décoder tes nombres (il "voit" \x000 à la place d'un nombre par exemple).

Wizix te demande comment est encodé ton fichier (utf8, ansi, pages windows, etc.) et moi je te demande de nous fournir le contenu de ton fichier. Pour ce faire, soit vas sur ce site, soit poste-le ici (pour plus d'infos sur la syntaxe, c'est ici)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte