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 :

Problème de decoupage de chaine erronnée


Sujet :

Python

  1. #1
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut Problème de decoupage de chaine erronnée
    voici mon code
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    def filtrer(src, dst):
        """Fonction de traitement.
     
        Lit et traite ligne par ligne le fichier source (src).
        pour composé le fichier csv (dst).
        Est ajouter la convertion
        """
     
        # lecture des données
        for ligne in src:
            type = ligne[0:1]
            ps  = ligne[1:9]
            filler  = ligne[10:1]
            numsec = ligne[11:15]
            numfac = ligne[26:10]
            filler_2 = ligne[36:1]
            filler_3 = ligne[37:14]
            filler_4 = ligne[51:4]
            montant_a = ligne[55:8]
            print( ligne )
            vl_numfac = "numfac: %s- " % numfac
            vl_numsec = "numsec: %s- " % numsec
            print( vl_numfac )
            print( vl_numsec )
            print( montant_a )
     
     
     
     
          #  print("%s    %f", montant_a, montant_n)
            # Ecriture des données dans le fichier destination
            dst.write("%s;%s;%s\n" % (type, ps, numsec))
            pass
     
     
     
    # Ouverture du fichier source
    source = open("FICin.txt", "r")
     
    # Ouverture du fichier destination
    destination = open("FICout.csv", "w")
     
    try:
        # Appeler la fonction de traitement
        filtrer(source, destination)
     
    finally:
        # Fermeture du fichier destination
        destination.close()
     
        # Fermerture du fichier source
        source.close()

    contenu du fichier lu

    43701000A7 166053701029806030024932 00000000000009

    Le résultat de l’exécution du fichier:


    numfac: -
    numsec: 1660-

    pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            numsec = ligne[11:15]
            numfac = ligne[26:10]
    ne retourne pas les valeurs de l'extraction ????

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par dedalios Voir le message
    pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            numsec = ligne[11:15]
            numfac = ligne[26:10]
    ne retourne pas les valeurs de l'extraction ????
    Sans doute parce que tu spécifies pour ton slice des valeurs incorrectes.
    Tu penses récupérer quoi en indiquant ligne[26:10] ?


  3. #3
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut problème
    Citation Envoyé par bistouille Voir le message
    Salut.



    Sans doute parce que tu spécifies pour ton slice des valeurs incorrectes.
    Tu penses récupérer quoi en indiquant ligne[26:10] ?

    Mon erreur a été de supposé à la lecture d'exemple que var[a:b] voulait dire extraire de var la valeur de la chaine débutant en a pour une longueur de b.
    Alors qu'en réalité (5s après ce post) , j'ai constaté que var[a:b] le valeur a et b représente debut /fin de chaine var : codage var[a:b:k]

  4. #4
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut petit à petit
    voici la correction

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    #
    #
     
    def filtrer(src, dst):
        """Fonction de traitement.
     
        Lit et traite ligne par ligne le fichier source (src).
        pour composé le fichier csv (dst).
        Est ajouter la convertion
        """
     
        # lecture des données
        for ligne in src:
            type = ligne[0:1]
            ps  = ligne[1:10]
            filler_1 = ligne[10:1]
            numsec = ligne[11:26]
            numfac = ligne[26:35]
            filler_2 = ligne[36:37]
            filler_3 = ligne[37:50]
            filler_4 = ligne[51:55]
            montant_a = ligne[55:63]
            montant_b = ligne[64:72]
            n_montant_a = float (montant_a) / 100
            n_montant_b = float (montant_b) / 100
            acte  = ligne[72:75]
    # debut
            print( ligne )
            vl_numfac = "numfac: %s- " % numfac
            vl_numsec = "numsec: %s- " % numsec
            vl_montant_a = "montant_a: %s- " % montant_a
            vl_montant_b = "montant_a: %s- " % montant_a
            print( vl_numfac )
            print( vl_numsec )
            print( vl_montant_a )
            print( n_montant_a )
            print( vl_montant_b )
            print( n_montant_b )
            print( acte )
    # debut
            vl_montant_b = "n_montant_a :%8.2f " % n_montant_a
            print( vl_montant_b )
     
            # Ecriture des données dans le fichier destination
            dst.write("%s;%s;%s;%s;%8.2f\n" % (type, ps, numsec, numfac,n_montant_a))
            pass
     
     
     
    # Ouverture du fichier source
    source = open("FICin.txt", "r")
     
    # Ouverture du fichier destination
    destination = open("FICout.csv", "w")
     
    try:
        # Appeler la fonction de traitement
        filtrer(source, destination)
     
    finally:
        # Fermeture du fichier destination
        destination.close()
     
        # Fermerture du fichier source
        source.close()

    pour autant je dois trouver un solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            dst.write("%s;%s;%s;%s;%8.2f\n" % (type, ps, numsec, numfac,n_montant_a))
    %8.2f met dans la zone des blancs devant
    numfac,n_montant_a
    F30024932; 52.67

    hors je cherche a obtenir
    numfac,n_montant_a
    F30024932;00000052.67

    ceci étant il existe peut être un librairie python pour la conversion dans ce format ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 309
    Par défaut
    Salut,

    Tu dois le précéder d'un zéro, toutefois la première valeur de l'argument de formatage donne le nombre de caractères en tout, donc avec le point et les décimales.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>> a = 52.67
    >>> print("*%08.2f*" % a)
    *00052.67*
    >>> print("*%011.2f*" % a)
    *00000052.67*

  6. #6
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut etrange reaction
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    import string
    import sys
    #
    #
    
    def convertir(src, format , dst):
        n_src = float(src) / 100
        print (src)
        dst = format % n_src
        dst = dst.strip()
        dst = dst.replace('.', ',')
        pass
    
    def filtrer(src, dst):
        """Fonction de traitement.
    
        Lit et traite ligne par ligne le fichier source (src).
        pour composé le fichier csv (dst).
        Est ajouter la convertion
        """
    
        # lecture des données
        for ligne in src:
            type = ligne[0:1]
            ps  = ligne[1:10]
            filler_1 = ligne[10:1]
            numsec = ligne[11:26]
            numfac = ligne[26:35]
            filler_2 = ligne[36:37]
            filler_3 = ligne[37:50]
            filler_4 = ligne[51:55]
            montant_a = ligne[55:63]
            montant_b = ligne[64:72]
    
            acte  = ligne[72:75]
    
            # c_montant_a = "%8.2f"  % n_montant_a
            # c_montant_a = c_montant_a.strip()
            # c_montant_a = c_montant_a.replace('.', ',')
            c_montant_a = ""
            convertir(montant_a, "%8.2f", c_montant_a )
            print (c_montant_a)
    
            # Ecriture des données dans le fichier destination
         #   dst.write("%s;%s;%s;%s;%8.2f\n" % (type, ps, numsec, numfac,n_montant_a))
            dst.write("%s;%s;%s;%s;%s\n" % (type, ps, numsec, numfac, c_montant_a))
            pass
    
    
    
    # Ouverture du fichier source
    source = open("FICin.txt", "r")
    
    # Ouverture du fichier destination
    destination = open("FICout.csv", "w")
    
    try:
        # Appeler la fonction de traitement
        filtrer(source, destination)
    
    finally:
        # Fermeture du fichier destination
        destination.close()
    
        # Fermerture du fichier source
        source.close()
    comment faire pour que la valeur de c_montant_a soit le résultat de def convertir(src, format , dst):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         convertir(montant_a, "%8.2f", c_montant_a )
            print (c_montant_a)

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par dedalios Voir le message
    comment faire pour que la valeur de c_montant_a soit le résultat de def convertir(src, format , dst):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         convertir(montant_a, "%8.2f", c_montant_a )
            print (c_montant_a)
    Le résultat d'une fonction est l'objet qu'elle retourne (via le mot clé "return") et qui pourra être assigné à une variable.... Comme on l'apprend dans n'importe quel tuto.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut merci
    Pas cool Python

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    import string
    import sys
    
    
    def convertir(src, format):
        n_src = float(src) / 100
        resultat = format % n_src
        resultat = resultat.strip()
        resultat = resultat.replace('.', ',')
        return resultat
        pass
    
    
    def filtrer(src, dst):
        """Fonction de traitement.
        Lit et traite ligne par ligne le fichier source (src).
        pour compos? le fichier csv (dst).
        Est ajouter la convertion
        """
        # l entete
        dst.write("FLNPS;FLNSS;FLRBEN;FLNFAC;FLNPRE;FLDNAI;FLDSOI;FLACTE;FLQTEA;FLCOEF;"
                  "FLDENO;FLMPUN;FLMDEP;FLTMSS;FLMRSS;FLMRAD;FLMRMU;FLDTRT;FLNOM;FLPREN;FLNOCT;FLNPEC;FLNADH"
                  "FLDSAI;FLDCGR;FLCCAI;FLCCEN\n")
    
    # lecture des donnees
    for ligne in src:
        FLTENR = ligne[0:1]  
        FLNPS = ligne[1:10]
        FLZEXT = ligne[11:11]
        FLNSS = ligne[11:26]
        FLRBEN = ligne[26:29]
        FLNFAC = ligne[29:38]
        FLFIL1 = ligne[43:43]
        FLNPRE = ligne[43:52]
        FLDNAI = ligne[52:58]
        FLCCIP = ligne[59:59]
        FLDFAC = ligne[59:65]
        FLFIL2 = ligne[65:69]
        FLDSOI = ligne[69:75]
        FLACTE = ligne[75:80]
        FLQTEA = ligne[80:82]
        FLFIL4 = ligne[82:83]
        FLCOEF = ligne[83:88]
        FLCOEF_N = convertir(FLCOEF, "%5.0f")
        FLDENO = ligne[88:90]
        FLDENO_N = convertir(FLDENO, "%2.0f")
        FLMPUN = ligne[90:97]
        FLMPUN_N = convertir(FLMPUN, "%7.2f")
        FLMDEP = ligne[97:104]
        FLMDEP_N = convertir(FLMDEP, "%7.2f")
        FLTMSS = ligne[104:107]
        FLTMSS_N = convertir(FLTMSS, "%3.0f")
        FLMRSS = ligne[107:114]
        FLMRSS_N = convertir(FLMRSS, "%7.2f")
        FLMRAD = ligne[114:121]
        FLMRAD_N = convertir(FLMRAD, "%7.2f")
        FLMRMU = ligne[121:128]
        FLMRMU_N = convertir(FLMRMU, "%7.2f")
        FLUSER = ligne[128:138]
        FLDTRT = ligne[138:146]
        FLNMUT = ligne[146:149]
        FLNOM = ligne[149:174]
        FLPREN = ligne[174:189]
        FLNLOT = ligne[189:192]
        FLNOCT = ligne[192:195]
        FLNPEC = ligne[195:211]
        FLLIGN = ligne[211:215]
        FLNADH = ligne[215:223]
        FLDSAI = ligne[223:231]
        FLDCGR = ligne[231:233]
        FLCCAI = ligne[233:236]
        FLCCEN = ligne[236:240]
        FLNASS = ligne[242:242]
        FLDPRE = ligne[242:248]
        FLNIDU = ligne[248:258]
        FLIDFI = ligne[258:264]
        FLTYNR = ligne[264:268]
        FLVENR = ligne[268:270]
        FLNUMD = ligne[270:285]
        FLLGID = ligne[285:291]
        FLSPPR = ligne[291:293]
        FLSPEX = ligne[293:295]
        FLZTAR = ligne[295:297]
        FLNPSG = ligne[297:306]
    
        dst.write("%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s\n" %
                  (FLNPS, FLNSS, FLRBEN, FLNFAC, FLNPRE, FLDNAI, FLDSOI, FLACTE, FLQTEA, FLCOEF_N
                   , FLDENO_N, FLMPUN_N, FLMDEP_N, FLTMSS_N, FLMRSS_N, FLMRAD_N, FLMRMU_N, FLDTRT, FLNOM, FLPREN,
                   FLNOCT, FLNPEC, FLNADH, FLDSAI, FLDCGR, FLCCAI, FLCCEN))
    
    pass  # Ouverture du fichier source
    source = open("Total-Flux_Non_Traitable_Flunet.txt", "r")
    
    # Ouverture du fichier destination
    destination = open("Total-Flux_Non_Traitable_Flunet.csv", "w")
    
    try:
        # Appeler la fonction de traitement
        filtrer(source, destination)
    
    finally:
        # Fermeture du fichier destination
        destination.close()
    
        # Fermerture du fichier source
        source.close()

    Pourquoi ai-je cette erreur la je ne vois pas
    for ligne in src:
    NameError: name 'src' is not defined

    Process finished with exit code 1



    pourtant la définition existe def filtrer(src, dst):


    Visiblement le problème est lier au indentation du code .

    Le code après correction semble mieux fonctionner eu créer le fichier de sortie mais pour autant lors de l'exécution l'IDE Pycharm me retourne ce problème
    IL râle sur la conversion

    line 6, in convertir
    n_src = float(src) / 100
    ValueError: could not convert string to float:

  9. #9
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut problème de code
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    import string
    import sys
    
    def convertir(src, decimal, format):
        """Fonction de traitement.
         Convertion  floattant en chaine  version française
        """
        cor_decimal = 10.0 ** decimal
        n_src = float(src) 
        n_src =  n_src / cor_decimal
        resultat = format % n_src
        resultat = resultat.strip()
        resultat = resultat.replace('.', ',')
        return resultat
        pass
    
    
    def filtrer(src, dst):
        """Fonction de traitement.
        Lit et traite ligne par ligne le fichier source (src).
        pour compos? le fichier csv (dst).
        Est ajouter la convertion
        """
        # l entete
        dst.write("FLNPS;FLNSS;FLRBEN;FLNFAC;FLNPRE;FLDNAI;FLDSOI;FLACTE;FLQTEA;FLCOEF;"
                  "FLDENO;FLMPUN;FLMDEP;FLTMSS;FLMRSS;FLMRAD;FLMRMU;FLDTRT;FLNOM;FLPREN;FLNOCT;FLNPEC;FLNADH"
                  "FLDSAI;FLDCGR;FLCCAI;FLCCEN\n")
    
    # lecture des donnees
    for ligne in src:
        FLTENR = ligne[0:1]  
        FLNPS = ligne[1:10]
        FLZEXT = ligne[11:11]
        FLNSS = ligne[11:26]
        FLRBEN = ligne[26:29]
        FLNFAC = ligne[29:38]
        FLFIL1 = ligne[43:43]
        FLNPRE = ligne[43:52]
        FLDNAI = ligne[52:58]
        FLCCIP = ligne[59:59]
        FLDFAC = ligne[59:65]
        FLFIL2 = ligne[65:69]
        FLDSOI = ligne[69:75]
        FLACTE = ligne[75:80]
        FLQTEA = ligne[80:82]
        FLFIL4 = ligne[82:83]
        FLCOEF = ligne[83:88]
        FLCOEF_N = convertir(FLCOEF, "%5.0f")
        FLDENO = ligne[88:90]
        FLDENO_N = convertir(FLDENO, "%2.0f")
        FLMPUN = ligne[90:97]
        FLMPUN_N = convertir(FLMPUN, "%7.2f")
        FLMDEP = ligne[97:104]
        FLMDEP_N = convertir(FLMDEP, "%7.2f")
        FLTMSS = ligne[104:107]
        FLTMSS_N = convertir(FLTMSS, "%3.0f")
        FLMRSS = ligne[107:114]
        FLMRSS_N = convertir(FLMRSS, "%7.2f")
        FLMRAD = ligne[114:121]
        FLMRAD_N = convertir(FLMRAD, "%7.2f")
        FLMRMU = ligne[121:128]
        FLMRMU_N = convertir(FLMRMU, "%7.2f")
        FLUSER = ligne[128:138]
        FLDTRT = ligne[138:146]
        FLNMUT = ligne[146:149]
        FLNOM = ligne[149:174]
        FLPREN = ligne[174:189]
        FLNLOT = ligne[189:192]
        FLNOCT = ligne[192:195]
        FLNPEC = ligne[195:211]
        FLLIGN = ligne[211:215]
        FLNADH = ligne[215:223]
        FLDSAI = ligne[223:231]
        FLDCGR = ligne[231:233]
        FLCCAI = ligne[233:236]
        FLCCEN = ligne[236:240]
        FLNASS = ligne[242:242]
        FLDPRE = ligne[242:248]
        FLNIDU = ligne[248:258]
        FLIDFI = ligne[258:264]
        FLTYNR = ligne[264:268]
        FLVENR = ligne[268:270]
        FLNUMD = ligne[270:285]
        FLLGID = ligne[285:291]
        FLSPPR = ligne[291:293]
        FLSPEX = ligne[293:295]
        FLZTAR = ligne[295:297]
        FLNPSG = ligne[297:306]
    
        dst.write("%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s\n" %
                  (FLNPS, FLNSS, FLRBEN, FLNFAC, FLNPRE, FLDNAI, FLDSOI, FLACTE, FLQTEA, FLCOEF_N
                   , FLDENO_N, FLMPUN_N, FLMDEP_N, FLTMSS_N, FLMRSS_N, FLMRAD_N, FLMRMU_N, FLDTRT, FLNOM, FLPREN,
                   FLNOCT, FLNPEC, FLNADH, FLDSAI, FLDCGR, FLCCAI, FLCCEN))
    
    pass  # Ouverture du fichier source
    source = open("Total-Flux_Non_Traitable_Flunet.txt", "r")
    
    # Ouverture du fichier destination
    destination = open("Total-Flux_Non_Traitable_Flunet.csv", "w")
    
    try:
        # Appeler la fonction de traitement
        filtrer(source, destination)
    
    finally:
        # Fermeture du fichier destination
        destination.close()
    
        # Fermerture du fichier source
        source.close()
    probleme
    [GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] o
    >>> Exception "unhandled ValueError"
    could not convert string to float:
    File: /home/....../refichier.py, Line: 10

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 827
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    could not convert string to float:
    Ce qui est dommage, est de ne pas montrer la valeur que vous tentez de convertir, et qui se trouve juste après la ponctuation ":".

    Peut-être vous seriez vous rendu compte que de transformer par exemple un caractère alphabétique vous donne logiquement ce type d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> float("a")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: could not convert string to float: 'a'

Discussions similaires

  1. Problème avec un decoupage de chaine
    Par Xenon03 dans le forum ASP
    Réponses: 5
    Dernier message: 17/04/2009, 16h39
  2. [RegEx] Preg_split decoupage de chaine
    Par Dargos dans le forum Langage
    Réponses: 6
    Dernier message: 10/04/2006, 11h32
  3. Réponses: 2
    Dernier message: 23/03/2006, 13h39
  4. Réponses: 11
    Dernier message: 22/03/2006, 22h57
  5. Réponses: 4
    Dernier message: 20/08/2004, 11h59

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