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 :

Formatage pour édition des zones numériques [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Points : 88
    Points
    88
    Par défaut Formatage pour édition des zones numériques
    Bonsoir,

    je n'arrive pas à trouver comment mettre en forme l'affichage des zones numeriques.

    Valeur je souhaite obtenir à l'affichage
    -------- -----------------------------------

    10 -----------------------------------> 10,00
    2.3 ------------------------------------> 2,30
    1256 -------------------------------> 256,00
    -12 ---------------------------------> -12,00
    1345678 --------------------> 1 354 678,00

    Merci de votre aide,

    Cordialement

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Tout est .
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Il faut avoir le réflexe "python 3"

    https://docs.python.org/3/library/st...ing-formatting

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Merci pour les réponses.

    J'ai consulté les liens indiqués et fais des tests.

    Par contre je n'ai pas réussi à faire ce que je souhaitais.

    print('{:,}' .format(123456))

    Je met bien une virgule en séparateur de millier, par contre je ne sais comment faire pour mettre un espace.

    Merci de votre aide

    Cordialement

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 740
    Points
    2 740
    Par défaut
    Salut,

    en lisant la doc, j'ai cru d'abord que le type 'n' à la fin de ta chaine de format pourrait suffire...
    Citation Envoyé par la doc
    'n': Number. This is the same as 'd', except that it uses the current locale setting to insert the appropriate number separator characters.
    [...]
    'n': Number. This is the same as 'g', except that it uses the current locale setting to insert the appropriate number separator characters.
    En pratique, d'après les quelques tests que j'ai fait, il ne met absolument pas d'espace pour séparer les milliers.


    Donc, à ta place je ferais comme ça:
    1. utiliser la virgule comme séparateur de milliers
    2. remplacer les virgules par des espaces avec la méthode replace
    3. éventuellement, remplacer le point décimal par une virgule

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    A défaut de trouver une meilleure solution, voilà comment je ferais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    print("{:,.2f}".format(10).replace(',', ' ').replace('.', ','))
    print("{:,.2f}".format(2.3).replace(',', ' ').replace('.', ','))
    print("{:,.2f}".format(1256).replace(',', ' ').replace('.', ','))
    print("{:,.2f}".format(-12).replace(',', ' ').replace('.', ','))
    print("{:,.2f}".format(1345678).replace(',', ' ').replace('.', ','))
    Ce qui donne:

    10,00
    2,30
    1 256,00
    -12,00
    1 345 678,00

    Pour afficher le nb négatif en rouge: ce n'est plus du formatage, et ça dépend du logiciel d'affichage.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par Tryph Voir le message
    en lisant la doc, j'ai cru d'abord que le type 'n' à la fin de ta chaine de format pourrait suffire...

    En pratique, d'après les quelques tests que j'ai fait, il ne met absolument pas d'espace pour séparer les milliers.
    En fait si, il le fait mais en se basant sur des locales par défaut de python qui utilisent la virgule comme séparateur de milliers, ce qui fait que ça ne change rien par rapport à '{:,}' .format(123456).

    Après quelques recherches, j'ai vu qu'en réglant la locale LC_NUMERIC sur une utilisant les espaces comme séparateur de milliers, on obtient le bon séparateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import locale
    >>> locale.setlocale(locale.LC_NUMERIC, 'fr_FR.UTF-8')
    'fr_FR.UTF-8'
    >>> "{:n}".format(123456)
    '123 456'
    Par contre avec "n" pas moyen d'avoir la précision souhaitée après la virgule.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Merci pour vos réponses qui m'ont fournis le moyen de répondre à mes interrogations.

    Bonne journée à tous,

    Cordialement

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

Discussions similaires

  1. Fonction pour comparer des caractères au numérique
    Par Spinoza23 dans le forum Débuter
    Réponses: 38
    Dernier message: 08/04/2008, 17h21
  2. Limite des zone d'édition a 255 caractére ?
    Par Arkencia dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/01/2008, 14h59
  3. [ERP Métier] XML pour générer des éditions
    Par c0nd0r2007 dans le forum XQUERY/SGBD
    Réponses: 13
    Dernier message: 07/12/2007, 09h04
  4. Réponses: 1
    Dernier message: 30/08/2006, 18h08
  5. Meilleur type table pour stocker des valeurs numérique
    Par vodevil dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/04/2006, 20h42

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