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 :

erreur encodage ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut erreur encodage ?
    J'ai quelques soucis sur un script qui me semblent (pour moi) inexplicables. L'erreur semble être au départ une erreur d'encodage mais je suis un peu perdu.

    Voici le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nouv_fichier=open("C:\\Documents and Settings\\PCA\\Bureau\\qual_novembre_decembre\\Cumul_quant.csv", "w")
    nouv_fichier.write("INDICE_NATIONAL"+" ; "+"DATE_MESURE"+";"+"VALEUR"+" ; "+"CODE_UNITES_REFERENCE"+ " ; "+"CODE_CONFORMITE"+" ; "+"CODE_CONTINUITE"+" ; "+"CODE_OBTENTION"+" ; "+"CODE_PRODUCTEUR"+ " ; " +"CODE_METHODE"+" ; "+"COMMENTAIRES"+"\n")
    compt3 = 0
    for ecrire in traitement:
        if ecrire[3]!=0 or type(ecrire[3])!= str:
            nouv_fichier.write("%s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; 2\n" % (ecrire[0], ecrire[1], ecrire[3], ecrire[4], ecrire[5], ecrire[6], ecrire[7], str(ecrire[8]), ecrire[9])
    nouv_fichier.close()
    Sous py-scripter
    L'erreur est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      File "E:\Etudes\E0961_SAGE_est_Lyonnais\essai_cumulasc.py", line 86
        nouv_fichier.close()
                   ^
    SyntaxError: invalid syntax
    avant ça j'ai eu des problèmes d'encodage du coup j'ai changé plusieurs fois l'en tête d'encodage... mais les erreurs se succédent et ne se ressemblent pas...
    Sous IDLE

    Tokken Error : EOF in multi-line statement


    J'ai également des erreurs d'encodage avec d'autres script qui ont pour en tête. # -*- coding: Latin-1 -*-
    Dans ces script tous les endroits où il y a des accents posent problème.

    NB : Cette erreur est apparue après une mise à jour de PyScripter...

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    il manque une parenthèse fermante à la fin de la ligne précedente

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    Merci pacificator,



    Malgré ça j'ai toujours une erreur qui subsiste au niveau de l'encodage, dans le reste du code mes accents ne sont pas reconnus. alors que l'en-tête est:
    # -*- coding: Latin-1 -*-

  4. #4
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Et tu es sûr que ton fichier est bien codé en latin-1 et non par mégarde en utf-8 ?

    Il faut faire attention, il y a un 2 choses différentes concernant l'encodage, la ligne python qui indique le jeu de caractères utilisé et le jeu de caractères effectif du fichier.

    La ligne "# -*- coding: Latin-1 -*-" n'est qu'une information pour pyhton.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    http://w w w.developpez.net/forums/d694863/autres-langages/python-zope/contribuez/tip-truc-astuce-conseil-eof-in-multi-line-statement/#post4052393[/url]

    http://www.developpez.net/forums/d69...t/#post4052393

  6. #6
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut Juste une parenthèse
    Oui il manque une parenthèse en fin de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    nouv_fichier.write
    (
    "%s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; 2\n" %
    (
    ecrire[0], ecrire[1], ecrire[3], ecrire[4], ecrire[5], ecrire[6], ecrire[7], str(ecrire[8]), ecrire[9]
    )
    )<= Rajouté...
    J'ai fait ceci pour le voir :

    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
     
    #!/usr/bin/env python
    # -*- coding: iso-8859-15 -*-
    fo=open("Par.py","r")
     
    for numligne,ligne in enumerate(fo):
        par=[]
        p=0
        for numc,c in enumerate(ligne) :
            if c=="(" :
                p=p+1
                par.append((c,numc))
            if c==")":
                p=p-1
                par.append((c,numc))
        if p!=0:
            print "ligne",numligne +1
            print ligne 
            print p ,"parenthèses non fermée"
            for l in par:
                print l[0],l[1]
            print "-------------------"
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ligne 6
            nouv_fichier.write("%s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; 2\n" % (ecrire[0], ecrire[1], ecrire[3], ecrire[4], ecrire[5], ecrire[6], ecrire[7], str(ecrire[8]), ecrire[9])
     
    1 parenthèses non fermée
    ( 26
    ( 80
    ( 161
    ) 171
    ) 183
    -------------------

Discussions similaires

  1. Erreur encodage Sql Server UTF-8
    Par Nico820 dans le forum Outils
    Réponses: 2
    Dernier message: 18/01/2011, 16h24
  2. [SSIS] [2K8] Validation XML erreur encodage
    Par StitchP dans le forum SSIS
    Réponses: 0
    Dernier message: 03/09/2010, 11h33
  3. Erreur encodage UTF-8
    Par dafalri dans le forum Langage
    Réponses: 8
    Dernier message: 02/12/2008, 15h44
  4. Erreur encodage
    Par mandaillou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2005, 15h27

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