IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire et modifier un fichier texte sur Python


Sujet :

Python

  1. #1
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Avril 2021
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Par d�faut Lire et modifier un fichier texte sur Python
    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. Savez-vous comment y parvenir ? Merci � vous
    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
    Je vous mets mon d�but de script cependant je ne sais pas s'il est bon:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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)

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 845
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par d�faut
    Bonjour

    Si j'ai bien compris, tu as une moyenne horizontale (la glyc�mie de joe, dan, etc) et une autre verticale (la glyc�mie de tous au temps 0, 4, 8, etc).
    La moyenne horizontale c'est peanut. Tu as ta ligne qui contient toutes les valeurs, te suffit de la splitter et additionner les valeurs
    Exemple
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    >>> lig="joe;1.2;1.01;0.73;0.87;1.21;0.81"
    >>> val=lig.split(";")[1:]
    >>> val
    ['1.2', '1.01', '0.73', '0.87', '1.21', '0.81']
    >>> sum(float(x) for x in val)/len(val)
    0.9716666666666667
    Pour la moyenne verticale l� c'est plus chaud. Je pense que je commencerais par tout r�cup�rer dans un tableau 2D ce qui me permettrait alors de couper ce tableau verticalement pour, pour chaque ligne, ne prendre que la colonne qui va bien.
    Exemple
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    >>> with open("fic", "r") as fp: data=tuple(tuple(ligne.strip().split(";")) for ligne in fp)
    >>> print(data)
    (('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'))
    Le reste ce n'est que de la boucle et de l'addition.

    Citation Envoy� par VickyLim Voir le message
    Je vous met mon d�but de script cependant je ne sais pas s'il est bon:
    Mouais. Un script on sait s'il est bon ou pas. En le lisant on doit pouvoir d�rouler dans sa t�te les op�rations qu'il va faire et dire si ces op�rations vont produire le r�sultat demand�. Dire "je ne sais pas s'il est bon" c'est juste un euph�misme pour "je sais qu'il n'est pas bon". Parce qu'en l'�tat, tu ne fais rien d'autre que lire ton fichier et afficher ses donn�es. Entre �a et rien...
    Ceci dit, pour supprimer le "\n" tu as str.strip() plus efficace que taper sur ligne[:-1] (je l'utilise dans mon second exemple). Passer par csv oui �a peut �tre une solution mais qui me semble inutile dans ce cas pr�cis (ce module est fait pour parser du csv anarchique, comme on peut le voir dans ces exemples).
    Et
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre Expert

    Homme Profil pro
    Ing�nieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par d�faut
    Dans un premier temps contente toi de lire l'information de ton fichier et de stocker �a dans un tableau (une liste de liste, un numpy.array, un objet CSV, ce que tu veux, mais une structure python qui contienne tes donn�es). Et apr�s tu it�res et tu fais des sommes pour calculer les moyennes sur les valeurs que tu as r�cup�r�.

  4. #4
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Avril 2021
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Par d�faut
    Bonjour,
    Je tiens � vous remercier pour votre r�ponse qui permet de m'�clairer un peu plus sur la compr�hension du langage Python. J'ai de mon c�t� tent� un d�but de script � la suite de votre r�ponse:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import csv
    liste=list(csv.reader(open('glycemie.txt','r'),delimiter=';'))
    print(liste)
     
    ligne_temps = liste[0:1]
    ligne_joe = liste[1:2]
    ligne_bob = liste[2:1]
    ligne_dan = liste[3:4]
    ligne_ryu = liste[4:5]
    ligne_ken = liste[5:6]
     
    ligne_temps.append("moyenne")
    float(ligne_joe)
    glycemie1 = sum(ligne_joe)/len(ligne_joe)
    ligne_joe.append(glycemie1)
    print(glycemie1)
    Cependant je n'arrive pas � convertir la ligne_joe en float et cela m�me en faisant "float(ligne_joe)" donc je ne peux calculer la moyenne savez-vous comment faire ?
    Merci � vous

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 845
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par VickyLim Voir le message
    Cependant je n'arrive pas � convertir la ligne_joe en float et cela m�me en faisant "float(ligne_joe)" donc je ne peux calculer la moyenne savez-vous comment faire ?
    "ligne_joe" ce n'est pas un nombre mais une liste de nombres. Tu ne peux donc pas demander float(liste_de_truc) car Python ne sait pas transformer �a en "float de chaque truc". Je t'ai montr� comment faire �a dans mon premier exemple.

    Question algo, donner des noms de variables associ�s � leur contenu c'est super mauvais. On ne nomme pas un int contenant une valeur (ex 150) en y incluant sa valeur (ex i_150=150) parce que cela fait perdre � la variable toute sa notion de variable justement (que se passe-t-il le jour o� tu veux y mettre 200?). Tu as "liste" qui est un tableau 2D totalement impersonnel, ce qui te permet justement d'y appliquer tout algorithme par une boucle de 1 � n et de traiter donc n fois ligne[x] en ne codant l'algo de traitement qu'une seule fois
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    for i in range(len(liste)):
    	print(liste[i])
    Plus facile que d'�crire
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    print(ligne_joe)
    print(ligne_bob)
    print(ligne_dan)
    print(ligne_ryu)
    print(ligne_ken)

    Toutefois, �vite tout de m�me de tomber dans l'exc�s inverse et de donner des noms comme "liste" qui ressemble � l'objet list.

    Et
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Avril 2021
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Par d�faut
    J'ai vraiment du mal � comprendre et �crire ce code... Pouvez-vous me le donner pour que je puisse comprendre svp ? Je sais que cela est s�rement beaucoup vous demander mais je suis bloqu�e sur cela depuis des jours et je ne trouve toujours pas comment y parvenir. Vous me serez d'une grande aide. Merci � vous

  7. #7
    Membre Expert

    Homme Profil pro
    Ing�nieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par d�faut
    Pour faire des moyennes, il vous faut des donn�es chiffr�es.

    Quand vous faites ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    import csv
    liste=list(csv.reader(open('glycemie.txt','r'),delimiter=';'))
    print(liste)
    vous avez une liste de string.
    Il faut modifier votre lecture pour transformer les string en des flottants. Donc au lieu de faire un list() dont vous ne maitrisez pas trop ce que ca fait, et bien construisez cette liste pas � pas, en utilisant une boucle for, sur chacune des lignes du fichier, ligne que vous pourrez traiter pour appliquer la transformation souhait�e qui va bien.

    avant d'essayer de calculer la moyenne, afficher vos donn�es et assurer vous d'avoir des float et pas des strings

  8. #8
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Avril 2021
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Par d�faut
    Merci � vous, pour la boucle for j'ai donc fait ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    import csv
    liste=list(csv.reader(open('glycemie.txt','r'),delimiter=';'))
    #print(liste)
     
    for i in range(1, len(liste), 1):
    	for j in range(1, len(liste[i]), 1):
    		float(liste[i][j])

  9. #9
    Membre Expert

    Homme Profil pro
    Ing�nieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par d�faut
    D'accord. Et le r�sultat de cette boucle alors, vous ne le stockez pas ? Vous pourriez �craser la valeur string par sa valeur convertie float. Suffit de faire print(liste) � la fin de ce bout de code pour voir si cela fourni le r�sultat escompt�. Et vous devriez voir que l� �a ne le fait pas ... L'id�e est l�, mais sans stockage du r�sultat de votre op�ration float, il ne va pas se passer grand chose malheureusement.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 845
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par VickyLim Voir le message
    Merci � vous, pour la boucle for
    Ouais, de rien. C'est vrai que la boucle "for" j'aurais pu aussi la mettre dans mon premier exemple

    Citation Envoy� par VickyLim Voir le message
    j'ai donc fait ceci:
    Mouais. Manque la sommation de la valeur et la division par le nombre de valeurs (enfin un calcul de moyenne quoi !!!)...
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Avril 2021
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Par d�faut
    Qu'entendez vous par stockage de variable je doit cr�er une variable moyenne puis faire:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import csv
    liste=list(csv.reader(open('glycemie.txt','r'),delimiter=';'))
    #print(liste)
     
    for i in range(1, len(liste), 1):
    	for j in range(1, len(liste[i]), 1):
    		float(liste[i][j])
    		moyenne = sum(liste[i][j])/len(liste[i][j])
    		print(moyenne)
    Je ne comprends pas pourquoi je ne peux toujours faire de somme alors que j'ai converti en float juste avant

  12. #12
    Membre Expert

    Homme Profil pro
    Ing�nieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    def f():
       liste = ['1','2','3']
       print(list)
       float(liste[0])
       print(list)
     
    f()
    Est ce que ce code converti le premier �l�ment de la liste en float ? Non. Essayer de faire fonctionner ce petit code que je vous donne avant, vous avez exactement le m�me probl�me, avec la m�thode float.
    Et dans ce genre de cas c'est que soit la m�thode ne fait pas ce qu'on croit, soit on l'utilise de la mauvaise mani�re, dans les deux cas, il faut aller lire la documentation de la m�thode float() !

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 845
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par VickyLim Voir le message
    Je ne comprends pas pourquoi je ne peux toujours faire de somme alors que j'ai converti en float juste avant
    Parce que la conversion en float a �t� perdue. Si j'�cris 2+3 sans le stocker quelque part, je perds le r�sultat de l'op�ration. L� c'est pareil. Ce serait bien que tu lises un tuto de prog qui t'explique l'utilit� des variables (Python ou n'importe quel autre langage, �a marche pareil)
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Avril 2021
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Par d�faut
    Tr�s bien je vais revoir quelques tutos parce que je suis d�finitivement confuse sur le fonctionnement de Python...
    Merci � tous pour vos r�ponses !!

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 845
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par d�faut
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    val=['1.2', '1.01', '0.73', '0.87', '1.21', '0.81']
    tot=0
    for v in val: tot+=float(v)
    print(tot/len(val))
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Modifier un fichier texte avec Python
    Par dino.adnane dans le forum G�n�ral Python
    R�ponses: 5
    Dernier message: 08/05/2018, 01h57
  2. R�ponses: 2
    Dernier message: 01/06/2011, 16h36
  3. lire et modifier un fichier texte
    Par developpeur82 dans le forum Entr�e/Sortie
    R�ponses: 17
    Dernier message: 03/04/2010, 10h25
  4. Lire, comparer et modifier 2 fichiers texte
    Par jojo57 dans le forum Langage
    R�ponses: 9
    Dernier message: 16/04/2009, 15h58
  5. lire/�crire sur un fichier texte sur un serveur distant
    Par nabmoah dans le forum Visual C++
    R�ponses: 6
    Dernier message: 12/02/2007, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo