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 avec les commentaires


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut problème avec les commentaires
    Voilà, dès que j'utilise trop de commentaires, j'ai des bug d'encodage (c'est un problème récurrent dans mes codes) ... alors, j'utilise # -*- coding:iso-8859-1 -*- , ça va parfois, mais tôt ou tard, en ajoutant des commentaire, le bug revient

    fichier :
    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
    # -*- coding:iso-8859-1 -*-
     
    # La fonction set est très intéressante, parce qu'elle permet de faire facilement des opérations courantes dans les ensembles.
     
    z=['A', 'A', 'B', 'C', 'E', 'A', 'C', 'D']
    print(list(set(z)))
    ['A', 'D', 'B', 'C', 'E']
     
    x=set(['A', 'B', 'C'])
    y=set(['C', 'D', 'E'])
     
    # Appartenance:
    print('A' in x)
    print('A' in y)
     
    # intersection
    print(x & y)
     
    # Union
    print(x|y)
     
    # différence
    print(x-y)
     
    # Une fois obtenu sous forme de "set", on peut toujours convertir en liste avec list(), et trier cette liste avec la méthode .sort() ou la fonction sorted():
    print(sorted(list(x|y)))
     
    # complémentaire de l'intersection  XOR 
    set(['A', 'B', 'C', 'D'])^set(['B', 'C', 'D', 'E'])
     
    # intersection (AND):
    set(['A', 'B', 'C', 'D'])&set(['B', 'C', 'D', 'E'])
     
    # L'union (OR):
    set(['A', 'B', 'C', 'D'])|set(['B', 'C', 'D', 'E'])
     
    # différence
    set(['A', 'B', 'C', 'D'])-set(['B', 'C', 'D', 'E'])
    sortie :
    File "set_test.py", line 1
    SyntaxError: encoding problem: iso-8859-1
    Y a-t'il dans ces commentaires, des caractères non iso-8859-1, que dois-je faire pour résoudre mon problème.
    J'ai une autre question, est-ce possible, de mettre tout un bloc de code en commentaire, sans devoir ajouter la dièse devant chaque ligne ?

    Merci beaucoup,
    -- Jasmine --

  2. #2
    Membre averti Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2012
    Messages : 219
    Points : 385
    Points
    385
    Par défaut

    Si tu utilises python3 pas la peine de te soucier de l'encodage il est automatiquement en utf8, mais vu que tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding:iso-8859-1 -*-
    il faut encoder/decoder tout ( chaines de caracteres ) pour obtenir les resultats attendus. Les commentaires n'ont rien a voir. c'est plutot ton instruction d'encodage.
    PS: il faut verifier l'encodage par defaut de ton editeur aussi, il est peut etre le coupable ( en passant c'est lequel ? )
    Toute chose dépend de la valeur qu'on lui attribue !

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Recoucou,

    J'utilise Python 3.5 et sans préciser l'encodage en première ligne, j'obtiens l'erreur :
    File "set_test.py", line 1
    SyntaxError: Non-UTF-8 code starting with '\xe8' in file set_test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
    Donc, que je ne mette rien, ou indique # -*- coding:iso-8859-1 -*- ... ça plante, avec 2 erreurs différentes. La seule façon que ce code fonctionne est d'en enlever tous les commentaires !

    Pourrais-tu, s'il te plait, tester ce code chez toi et dire si tu as une erreur ? Merci beaucoup.
    -- Jasmine --

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 688
    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 : 18 688
    Points : 32 261
    Points
    32 261
    Par défaut
    Salut,
    Citation Envoyé par Jasmine80 Voir le message
    Y a-t'il dans ces commentaires, des caractères non iso-8859-1, que dois-je faire pour résoudre mon problème.
    L'instruction # -*- coding:iso-8859-1 -*- sera lue par l'interpréteur Python à la lecture du fichier. Mais ce sera le boulot de l'éditeur de texte/script de sauvegarder le fichier dans ce format là. Vous utilisez quel éditeur?

    Citation Envoyé par Jasmine80 Voir le message
    J'ai une autre question, est-ce possible, de mettre tout un bloc de code en commentaire, sans devoir ajouter la dièse devant chaque ligne ?
    Techniquement, un commentaire est délimité par # mais dans votre cas, vous êtes plus en train de taper un aide mémoire que d'écrire du code... vous pouvez tricher en écrivant des chaines de caractères sur plusieurs lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     -*- coding:iso-8859-1 -*-
     
    '''La fonction set est très intéressante, parce qu'elle permet 
    de faire facilement des opérations courantes 
    dans les ensembles.'''
     
    z=['A', 'A', 'B', 'C', 'E', 'A', 'C', 'D']
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci beaucoup Wiztricks,

    J'utilise Scite, dont voici le fichier des paramètres 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
    107
    108
    109
    110
    111
    112
    113
    # Define SciTE settings for Python files.
     
    file.patterns.py=*.py;*.pyw
    file.patterns.scons=SConstruct;SConscript
     
    shbang.python=py
     
    filter.python=Python (py pyw)|$(file.patterns.py)|
     
    lexer.$(file.patterns.py)=python
    lexer.$(file.patterns.scons)=python
     
    keywordclass.python2=and as assert break class continue def del elif \
    else except exec finally for from global if import in is lambda not \
    or pass print raise return try while with yield
     
    keywordclass.python3=False None True and as assert break class continue \
    def del elif else except finally for from global if import in is lambda \
    nonlocal not or pass raise return try while with yield
     
    keywordclass.python=$(keywordclass.python2)
     
    # Extra keywords for cython
    keywordclass.cython=cdef cimport cpdef
     
    keywords.$(file.patterns.py)=$(keywordclass.python) $(keywordclass.cython)
    keywords.$(file.patterns.scons)=$(keywordclass.python)
     
    # If you uncomment the 3 lines below,
    # and put some words after "keywordclass2.python=",
    # those words will be styled by style.python.14
     
    #keywordclass2.python=
    #keywords2.$(file.patterns.py)=$(keywordclass2.python)
    #keywords2.$(file.patterns.scons)=$(keywordclass2.python)
     
    #~ statement.indent.$(file.patterns.py)=10 :
    statement.indent.$(file.patterns.py)=5 class def elif else except finally \
    for if try while with
     
    statement.lookback.$(file.patterns.py)=0
    block.start.$(file.patterns.py)=
    block.end.$(file.patterns.py)=
     
    view.indentation.examine.*.py=2
     
    tab.timmy.whinge.level=1
     
    #fold.quotes.python=1
     
    comment.block.python=#~
     
    indent.python.colon=1
     
    # Python styles
    # White space
    style.python.0=fore:#808080
    # Comment
    style.python.1=fore:#007F00,$(font.comment)
    # Number
    style.python.2=fore:#007F7F
    # String
    style.python.3=fore:#7F007F,$(font.monospace)
    # Single quoted string
    style.python.4=fore:#7F007F,$(font.monospace)
    # Keyword
    style.python.5=fore:#00007F,bold
    # Triple quotes
    style.python.6=fore:#7F0000
    # Triple double quotes
    style.python.7=fore:#7F0000
    # Class name definition
    style.python.8=fore:#0000FF,bold
    # Function or method name definition
    style.python.9=fore:#007F7F,bold
    # Operators
    style.python.10=bold
    # Identifiers
    style.python.11=
    # Comment-blocks
    style.python.12=fore:#7F7F7F
    # End of line where string is not closed
    style.python.13=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled
    # Highlighted identifiers
    style.python.14=fore:#407090
    # Decorators
    style.python.15=fore:#805000
    # Matched Operators
    style.python.34=fore:#0000FF,bold
    style.python.35=fore:#FF0000,bold
    # Braces are only matched in operator style
    braces.python.style=10
     
    if PLAT_WIN
    	command.go.*.py=C:\Program Files\Python 3.5\pythonw -u "$(FileNameExt)"
    	command.go.subsystem.*.py=1
    	command.go.*.pyw=pythonw -u "$(FileNameExt)"
    	command.go.subsystem.*.pyw=1
    	command.build.SConscript=scons.bat --up .
    	command.build.SConstruct=scons.bat .
     
    if PLAT_GTK
    	command.go.*.py=python -u "$(FileNameExt)"
    	command.build.SConscript=scons --up .
    	command.build.SConstruct=scons .
     
    if PLAT_MAC
    	command.go.*.py=python -u "$(FileNameExt)"
    	command.build.SConscript=scons --up .
    	command.build.SConstruct=scons .
     
    command.name.1.$(file.patterns.py)=Syntax Check
    command.1.$(file.patterns.py)=python -c "import py_compile; py_compile.compile(r'$(FilePath)')"
    Je ne vois pas où est l'encodage, peut-être n'y a-t'il encore rien de défini ?

    Pour le bloc de commentaires, c'est une question générale qui n'est pas en rapport avec ce code-ci.
    -- Jasmine --

  6. #6
    Membre averti Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2012
    Messages : 219
    Points : 385
    Points
    385
    Par défaut

    J'ai fait un petit tour pour toi sur le web et j'ai touve que le property Files de ton editeur Scite doit avoir ces 2 proprietes
    code.page=65001 et character.set=204 pour que tes fichiers soient enregistres en utf8
    source http://www.scintilla.org/SciTEDoc.html
    Toute chose dépend de la valeur qu'on lui attribue !

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 688
    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 : 18 688
    Points : 32 261
    Points
    32 261
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    J'utilise Scite, dont voici le fichier des paramètres Python.
    ...
    Je ne vois pas où est l'encodage, peut-être n'y a-t'il encore rien de défini ?
    Je n'utilise pas SciTe donc je ne peux pas vous aider mais maintenant que vous connaissez mieux la cause du problème, vous trouverez peut être une solution en faisant quelques recherches sur Google.

    Citation Envoyé par Jasmine80 Voir le message
    Pour le bloc de commentaires, c'est une question générale qui n'est pas en rapport avec ce code-ci.
    Dans le cas général, vous avez la possibilité d'écrire des "docstring" (ce sont des chaines de caractères entre """) voir le PEP 257.

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

  8. #8
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par cervo Voir le message

    J'ai fait un petit tour pour toi sur le web et j'ai touve que le property Files de ton editeur Scite doit avoir ces 2 proprietes
    code.page=65001 et character.set=204 pour que tes fichiers soient enregistres en utf8
    source http://www.scintilla.org/SciTEDoc.html
    Citation Envoyé par wiztricks Voir le message
    Dans le cas général, vous avez la possibilité d'écrire des "docstring" (ce sont des chaines de caractères entre """) voir le PEP 257.
    Merci à vous deux, je regarde ces 2 liens et je reviens :-) il est vraiment très actif ce forum, et j'ai rapidement des réponses dans la section Python un super grand merci à toute l'équipe.
    -- Jasmine --

  9. #9
    Expert éminent

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 4 212
    Points : 6 634
    Points
    6 634
    Par défaut
    Voilà, dès que j'utilise trop de commentaires, j'ai des bug d'encodage ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File "set_test.py", line 1
    SyntaxError: encoding problem: iso-8859-1
    Ce n'est sûrement pas à la ligne 1 que tu as écrit trop de commentaires.

    Plus loin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File "set_test.py", line 1
    SyntaxError: Non-UTF-8 code starting with '\xe8' in file set_test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
    Toujours ligne 1. Décidement.
    \xe8 en utf-8 c'est è

    Tu ne peux vraiment pas utiliser utf-8 pour enregistrer tes scripts ?

  10. #10
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Tu ne peux vraiment pas utiliser utf-8 pour enregistrer tes scripts ?
    Oui, ça revient au même pour moi. Je fais comment ? Quelle ligne de code ajouter ?
    -- Jasmine --

  11. #11
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 2 464
    Points : 5 456
    Points
    5 456
    Par défaut
    Dans scite pour enregistrer un fichier en UTF-8, il faut aller dans le menu file/fichier et choisir encoding UTF8.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  12. #12
    Expert éminent

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 4 212
    Points : 6 634
    Points
    6 634
    Par défaut
    Ben, ce n'est pas indiqué sur la page que t'a indiqué cervo: http://www.scintilla.org/SciTEDoc.html ?

  13. #13
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par cervo Voir le message
    code.page=65001 et character.set=204 pour que tes fichiers soient enregistres en utf8
    source http://www.scintilla.org/SciTEDoc.html
    Les commentaires avec accents continuent de faire planter le code, j'ai rien trouvé d'autre comme aide sur ce lien ... je vais donc écrire mes commentaires en anglais.
    -- Jasmine --

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#][XML] Problème avec les commentaires XML
    Par xanass dans le forum C#
    Réponses: 5
    Dernier message: 14/03/2011, 17h14
  2. Problème avec les commentaires conditionnels!
    Par BenCarolo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/03/2008, 12h52
  3. [XSLT] Problème avec les commentaires.
    Par jayjay78 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 22/02/2008, 11h15
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 16h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 10h59

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