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 :

Formater des nombre avec locale.format()


Sujet :

Python

  1. #1
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut Formater des nombre avec locale.format()
    Bonjour, j'ai quelques soucis quand au bon usage de locale.format()

    Tout d'abord :

    >>> import locale
    >>> locale.setlocale(locale.LC_ALL, "")
    'fr_BE.UTF-8'

    locale.localeconv() me retourne ceci

    mon_decimal_point ,
    int_frac_digits 2
    p_sep_by_space 1
    frac_digits 2
    thousands_sep .
    n_sign_posn 1
    decimal_point ,
    int_curr_symbol EUR
    n_cs_precedes 0
    p_sign_posn 1
    mon_thousands_sep .
    negative_sign -
    currency_symbol €
    n_sep_by_space 1
    mon_grouping [3, 3, 0]
    p_cs_precedes 0
    positive_sign
    grouping []
    Le séparateur des milliers semble bien être le point.

    Pourtant:


    >>> print locale.format('%d', 1234567890123, True)
    1234567890123
    >>> print locale.format_string('%d', 1234567890123, True)
    1234567890123
    J'ai aussi essayé avec '%s' et aussi avec locale.setlocale(locale.LC_NUMERIC, "")
    sans plus de succès.


    Je me dis que ce doit être une bêtise, si quelqu'un pouvait m'éclairer.

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Le séparateur doit "apparaître" avec group=True:
    locale.format('%d', 123456789, True)

    Problème: vous avez l'air de faire les choses correctement et çà fonctionne - le séparateur "sort" - chez moi. Et si ce n'est pas un problème "d'usage", quelle version de Python sur quel OS êtes vous?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Python 2.6 sous GNU-Linux
    Ubuntu 10.04

    Par acquit de conscience, j'ai essayé avec Python3, sans résultat, non plus.

    Avec Qt pas de problèmes, par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # -*- coding: utf-8 -*-
     
    from PyQt4 import QtCore
     
    loc = QtCore.QLocale.system().name()
    language = QtCore.QLocale(loc)
    print language.toString(123456789321)
    123.456.789.321

    Etrange, non ?

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Et dans un script c'est encore pire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import locale
    locale.setlocale(locale.LC_ALL, '')
    Traceback (most recent call last):
    File "screen.py", line 11, in <module>
    locale.setlocale(locale.LC_ALL, '')
    AttributeError: 'module' object has no attribute 'setlocale'
    Y a-t-il une rubrique phénomènes paranormaux sur ce forum ?

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Au temps pour moi, j'avais un fichier intitulé locale.py dans le même dossier.

    Le phénomène paranormal était, donc, localisé entre chaise et clavier.

    La première question reste, toutefois posée.

Discussions similaires

  1. [XL-2007] probleme avec format des nombres
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/10/2012, 16h20
  2. formater un nombre avec des zeros à gauche
    Par roger789 dans le forum Débuter
    Réponses: 0
    Dernier message: 18/04/2011, 22h32
  3. Réponses: 8
    Dernier message: 27/10/2008, 16h52
  4. Réponses: 9
    Dernier message: 09/04/2008, 18h30
  5. Formater un nombre avec des séparateurs de milliers
    Par lagotonio dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/02/2007, 19h23

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