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 :

Utilisation de zfill


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut Utilisation de zfill
    Bonjour,

    Je cherche a "padder" une string avec des zeros, afin d'avoir une chaine de longueur fixe. Je comprends pas le comportement de zfill ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>> a="\x44"
    >>> b = "%s".zfill(16) % a
    >>> print len(b)
    15
    >>> c = "%s".zfill(32) % "abc"
    >>> print len(c)
    33
    C'est pas sense me retourne une chaine de longueur 16 ou 32, paddee a gauche avec des zeros?

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Ok, je comprends pas trop la subitlite, mais dans ce cas suivant ca marche correctement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >>> c="\x53"
    >>> d = "%s".zfill(16) % (c)
    >>> print d
    00000000000000S
    >>> print len(d)
    15
    >>> j = c.zfill(16)
    >>> print j
    000000000000000S
    >>> print len(j)
    16
    Si quelqu'un a une idee du probleme?

    Ce cas ci fonctionne bien, ce qui laisse a penser que le premier cas devrait marcher egalement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> z = "\x61".zfill(23)
    >>> print len(z)
    23
    Merci.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    Par contre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> a
    'd'
    >>> a = "d"
    >>> len(a.zfill(16))
    16
    >>> len(a.zfill(32))
    32
    >>> b=a.zfill(16)
    >>> len(b)
    16
    >>> b=a.zfill(32)
    >>> len(b)
    32
    >>>
    Non??

    PS: Oups, désolé, je n'avais pas bien regardé votre réponse!!

    Clodion

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par dahtah Voir le message
    Ok, je comprends pas trop la subitlite
    Voyons ça de plus près

    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
     
    >>> a = "a"
    >>> b = "%s".zfill(16) % a
    >>> b
    '00000000000000a'
    >>> len(b) 
    15 
    >>> # découpons ce qui est fait plus haut en deux étapes
    ... 
    >>> tmp = "%s".zfill(16)
    >>> tmp
    '00000000000000%s'
    >>> # hehe
    ...
    >>> len(tmp)
    16
    >>> b = tmp % a
    >>> # on remplace '%s' (deux caractères) par 'a' (un seul)
    ...
    >>> b
    '00000000000000a'
    >>> len(b)
    15
    >>> # Bon sang mais c'est bien sûr !
    ... # Il faut faire la substitution de chaîne avant le zfill...
    ...
    >>> b = ("%s" % a).zfill(16)
    >>> b
    '000000000000000a'
    >>> len(b)
    16
    >>>

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Citation Envoyé par valAa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >>> tmp = "%s".zfill(16)
    >>> tmp
    '00000000000000%s'
    Bien vu .

    Merci

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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