Re: question formatage de printf

トップ ページ

このメッセージに返信
著者: Marc TERRIER
日付:  
To: guilde
題目: Re: question formatage de printf
ged <gedeon.legaut@???> a écrit :

> Bonjour,
>
> Je viens de me faire un script python qui calcule les mensualités d'un
> prêt et j'affiche les résultats avec la fonction "print".
>
> Je voudrais que par exemple 15000 € apparaisse sous la forme 15 000 €
> avec un espace entre 15 et 000.
>
> Je n'ai pas trouvé comment faire avec les options de format : pour
> l'instant, j'ai "%10.2f".
>
> Est-ce qqn aurait une idée ?
>
> Merci et bonne journée
> Gédéon


Bonjour Gédéon,

Je ne connais rien à Python, mais j'avais voulu faire exactement ça en
Perl, il y a quelques années, et voici comment j'avais fait : tu peux
peut-être t'en inspirer pour faire quelque chose d'analogue en Python.

1) Tu retournes le nombre que tu veux afficher ( sa partie entière, si
c'est un nombre à virgule ), considéré temporairement comme une chaîne
de caractères, avec une fonction miroir ( reverse, en Perl ) :

    my $titi = "1234567890";
    my $toto = reverse $titi;
    print $toto;               ==> "0987654321"


2) Avec une expression rationnelle toute simple, tu remplaces les
groupes de trois chiffres par la même chose suivie du caractère que tu
veux utiliser pour grouper les milliers ( espace en France, virgule
aux U.S.A., etc. ) :

    $toto =~ s/(\d{3})/$1 /g;
    print $toto                ==> "098 765 432 1"


3) Tu retournes à nouveau le résultat, et voilà, le tour est joué :

    print reverse $toto        ==> "1 234 567 890"


Je ne prétends pas que ce soit idéal, mais ça marche, et ça ne doit
pas être très compliqué à traduire en Python. Cela dit, j'aimerais
bien savoir à quoi Patrice fait allusion, précisément, quand il dit
que Perl gère ça nativement depuis 15 ans : ma solution fonctionne,
mais je suis loin d'être un expert en Perl, et il y a probablement
plus simple.

Voilà, j'espère que ça peut t'aider, même si j'arrive un peu après la
bataille.

--
Marc
Mail : marc.terrier [at] free.fr
Site : http://marc.terrier.free.fr