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

Fortran Discussion :

Lire un fichier csv décimale "." ou ","


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Par défaut Lire un fichier csv décimale "." ou ","
    bonjour à tous et à toutes.

    j'ai un fichier type csv créé par une macro EXCEL. Mon souhait serait de pouvoir stocker les valeurs dans un tableau avec fortran.
    Le problème c'est que je n'arrive pas à donner une condition sur le séparateur de décimales.

    le code ci-dessous fonctionne si je règle mes paramètres régionaux en "." pour le séparateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    !LIRE LE FICHIER 
    OPEN(UNIT=30,FILE='donnees.csv',STATUS='OLD')
     READ(30,*) TITRE
     
         DO i=1 ,nbre
            Read(30,*)(MON_TABL(i,j) , j=1,50,1 )
         END DO
     
      CLOSE(30)
    Dans le cas où le séparateur des décimales est "," cela ne fonctionne pas.

    Pourriez vous s'il vous plaît m'éclairer ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Je n'ai cherché, mais il me semble que tu peux forcer le séparateur décimal en Fortran 2003 (?).

    Mais personnellement, j'utilise toujours la solution suivante :
    • Lire une ligne dans une variable caractère
    • Changer les séparateurs par une petite boucle
    • "Lire" la variable caractère avec les variables voulues (read(chaine,*) liste de variable)
    • Passer à la ligne suivante

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Par défaut Merci
    Merci pour votre réponse.

    J'arrive à lire une seule ligne mais je ne sais pas passer à la suivante :
    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
    17
    18
    19
    20
    21
    22
     
    !LIRE LE FICHIER 
    OPEN(UNIT=10,FILE='donnees.csv',STATUS='OLD')
    DO
       READ(10,'(a)',iostat=k) Ligne
       IF (k /= 0) exit
     
    !  Changement du delimiteur de decimales
       	   DO
          	Pos = index(Ligne,',') 
          	if (Pos == 0) exit
          	Ligne(Pos:Pos) = '.'
      	   END DO
     
    !  Changement du delimiteur de champs
      	 DO
               Pos = index(Ligne,';') 
               if (Pos == 0) exit
               Ligne(Pos:Pos) = ','
        END DO
     
    END DO

    AUTRE ASTUCE (----> Méthode sauvage)
    Je vais créer une macro dans le fichier excel qui remplace les "," par des "."
    Ensuite, j'enregistre le fichier au format *.txt, qui sera lisible par le fortran.


    Merci pour votre aide, je vais continuer.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur modélisation aérodynamique
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur modélisation aérodynamique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Par défaut
    Bonjour,

    Je trouve que c'est encore ce qu'il y a de moins "sauvage"
    Le fortran n'est pas très bien adapté pour manipuler des chaines de caractères, c'est un language de calcul comme son nom l'indique.

    Du coup formater un fichier s'avère parfois très chiant. Si tu peux le faire avec un autre outil plus facilement, c'est encore le mieux

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut lire fichier texte à partir d'excel
    bonjour
    plus simple que ca mon ami,tu meurs.
    -formate tes colonnes en standard
    -donne leur une largeur (mettons identique par exemple 8 caracteres ou varie)
    -insere une colonne vide mettons 2 caracteres entre chaque colonne
    enregistre ton fichier en .PRN (c'est ca l'astuce).
    Ce sera du SDF (FixedFormat delimite avec espace) respectant les largeurs de colonnes donnes avec 2 espaces entre chaque champ.
    pour le lire le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    READ (10000, err=200,end=200) col1,col2,col3 ,etc...
    10000 FORMAT(a8,2x,a8,2x,a8,2x ,etc.....,/)
    pour automatiser le bataclan dans Excel ,tu fais une macro qui balaye tes colonnes de A à F et qui fait Cells.Width=8, Cells.Column.Insert(i,j) (colonne intercalaire vide).
    un fortraner eprouve ....
    bon code....

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut les points virgules et les points
    rebonjour
    ah j'ai oublie .Notation decimale anglaise avec point en fortran et les virgules francaises dans excel.
    Avec d'enregistrer en .prn et click sur le panneau configuration et change le en english et excel bascule en notation decimale anglaise instantanement.
    Et save workbook et ok ...ok...sans crainte .
    Les nombres dans le .prn seront Notation decimale English.
    voila apres enregistre pour le mettre dans ton album le classeur en xls et panneau francais.
    bon code....

Discussions similaires

  1. Ouvrir et lire un fichier .csv
    Par Art19 dans le forum Composants VCL
    Réponses: 24
    Dernier message: 23/05/2025, 11h13
  2. Lire un fichier .csv sous unix
    Par bslota dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 21/11/2007, 17h41
  3. Lire un fichier CSV ou XLS de la même manière
    Par Linio dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/07/2007, 15h12
  4. Réponses: 12
    Dernier message: 12/04/2006, 10h20
  5. Lire un fichier CSV/XLS
    Par Doneve dans le forum ASP
    Réponses: 3
    Dernier message: 04/10/2005, 17h34

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