Lire et modifier un fichier texte

Fermé
Victoria - 31 mars 2021 à 17:28
jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024 - 1 avril 2021 à 10:50
Bonjour,
Je suis novice dans l'utilisation de Python et je souhaiterai à partir d'un fichier texte qui contient des valeurs de glycémie créer un script qui permettrait d'effectuer les moyennes de ces valeurs glycémiques par personnes sur une colonne et une autre moyenne issue de la glycémie de chaque personne en fonction du temps sur une ligne. Pouvez-vous m'aider svp ?
Ci-dessous le contenu du fichier:
temps;0;4;8;12;16;20
joe;1.2;1.01;0.73;0.87;1.21;0.81
bob;1.06;1;0.83;1.04;1.24;1.4
dan;0.89;0.97;0.93;1.23;0.83;0.78
ryu;1.13;0.84;0.92;0.71;0.7;0.95
ken;0.92;0.75;1.29;0.74;1.28;1.2
A voir également:

5 réponses

jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024 9 225
31 mars 2021 à 18:17
Bonjour,

L'utilisation d'un fichier texte dans Python est simplissime :
with open('fic/ficc1.txt', 'r') as orig:
   for ligne in orig:
      colonne = ligne[:-1].split(';')
      print('ligne =',ligne)
      print('colonnes =',colonne) 

A toi de traiter les données.
0
VickyLim Messages postés 4 Date d'inscription mercredi 31 mars 2021 Statut Membre Dernière intervention 15 mai 2021
31 mars 2021 à 18:31
Merci beaucoup pour ton aide,
Je dois donc maintenant convertir mes données en float en utilisant la fonction float(). Puis-je faire :
ma_liste = [ ]
for i in range(1, len(ma_liste), 1):
for j in range(1, len(ma_liste[i], 1):
float(ma_liste[i][j]

Je ne sais pas si cela peut aller à la suite du code avec colonne et ligne...
0
jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024 9 225
31 mars 2021 à 20:10
Tout d'abord, pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature.
Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Cela permet de conserver l'indentation, primordiale avec Python.

As-tu essayé le code de je t'ai donné ? Pour moi il ne donne pas un tableau 2D constitué avec le fichier chargé. Enfin ton code comporte une erreur de syntaxe en 3ème ligne, et une erreur de logique sur la 4ème, tu convertis une valeur, mais cette conversion est faite dans le vide puisque la valeur résultante n'est pas affectée à une variable.
0
VickyLim Messages postés 4 Date d'inscription mercredi 31 mars 2021 Statut Membre Dernière intervention 15 mai 2021
Modifié le 31 mars 2021 à 21:45
J'ai tapé ton code cependant j'aimerai y ajouter le calcul des moyennes mais je ne parviens pas à le faire. Il me semblais qu'on ne pouvais pas faire un calcul avec des nombres issus d'un document de texte ? Je ne sais pas comment faire...
0
jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024 9 225
31 mars 2021 à 23:40
Il faut bien sur que comme tu l'as commencé tu convertisses les champs texte en nombre avec float()
pour charger un tableau 2D directement à partir d'un fichier texte avec séparateur, on peut utiliser la bibliothèque CSV
import csv
liste=list(csv.reader(open('fic/ficc1.txt','r'),delimiter=';'))
print(liste)     
0
VickyLim Messages postés 4 Date d'inscription mercredi 31 mars 2021 Statut Membre Dernière intervention 15 mai 2021 > jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024
1 avril 2021 à 00:22
J'avoue être un peu perdu avec cela, je suis débutante sur python donc je ne comprends pas bien comment cela fonctionne. J'ai donc tappé:
with open('glycemie.txt', 'r') as fichier:
for ligne in fichier:
colonne = ligne[:-1].split(';')
print('ligne =',ligne)
print('colonnes =',colonne)

import csv
liste=list(csv.reader(open('glycemie.txt','r'),delimiter=';'))
print(liste)


Lorsque je le rentre ce code les colonnes indiquées ne sont pas les bonnes. Cela me donne:
ligne = temps;0;4;8;12;16;20

colonnes = ['temps', '0', '4', '8', '12', '16', '20']
ligne = joe;1.2;1.01;0.73;0.87;1.21;0.81

colonnes = ['joe', '1.2', '1.01', '0.73', '0.87', '1.21', '0.81']
ligne = bob;1.06;1;0.83;1.04;1.24;1.4

colonnes = ['bob', '1.06', '1', '0.83', '1.04', '1.24', '1.4']
ligne = dan;0.89;0.97;0.93;1.23;0.83;0.78

colonnes = ['dan', '0.89', '0.97', '0.93', '1.23', '0.83', '0.78']
ligne = ryu;1.13;0.84;0.92;0.71;0.7;0.95

colonnes = ['ryu', '1.13', '0.84', '0.92', '0.71', '0.7', '0.95']
ligne = ken;0.92;0.75;1.29;0.74;1.28;1.2

colonnes = ['ken', '0.92', '0.75', '1.29', '0.74', '1.28', '1.2']
[['temps', '0', '4', '8', '12', '16', '20'], ['joe', '1.2', '1.01', '0.73', '0.87', '1.21', '0.81'], ['bob', '1.06', '1', '0.83', '1.04', '1.24', '1.4'], ['dan', '0.89', '0.97', '0.93', '1.23', '0.83', '0.78'], ['ryu', '1.13', '0.84', '0.92', '0.71', '0.7', '0.95'], ['ken', '0.92', '0.75', '1.29', '0.74', '1.28', '1.2']]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jee pee Messages postés 39583 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 avril 2024 9 225
1 avril 2021 à 10:50
Les 2 méthodes de lecture du fichier ne s'utilisent pas ensemble. La seconde est celle qui colle le mieux avec le code que tu as donné pour convertir les champs numériques, en chargeant un tableau
[ ['temps', '0', '4', '8', '12', '16', '20'], 
['joe', '1.2', '1.01', '0.73', '0.87', '1.21', '0.81'],
['bob', '1.06', '1', '0.83', '1.04', '1.24', '1.4'],
['dan', '0.89', '0.97', '0.93', '1.23', '0.83', '0.78'],
['ryu', '1.13', '0.84', '0.92', '0.71', '0.7', '0.95'],
['ken', '0.92', '0.75', '1.29', '0.74', '1.28', '1.2'] ]


J'ai l'impression que tu as des soucis pour bien appréhender et articuler, le code python, les données, et les variables qui contiennent les données.

Il faut peut être que tu reprennes le cours sur les types de données, les listes, les tableaux, leur initialisation, mise à jour ...
0