Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espace. ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement plus qualifiés que moi pour te répondre. :)
L'espace fine si on est pointilleux.
Jonathan Barnoud
Paul M.
Richard wrote:
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
1000000 => 1.000.000
merci
RM
je ferais :
std::string sepMilliers(const std::string &nombre) { int decalage = (nombre.size() - 1) % 3 + 1; // Nombre de chiffres à garder au // début : 1, 2 ou 3 std::string ret = nombre.substr(0, decalage); // On les garde
for(int i = 0; i < (nombre.size() - 1) / 3; ++ i) // Ensuite, pour c haque bloc // (nombre.size() / 3 blocs) { if(!ret.empty()) // On ajoute l'espace s'il y a quelque chose à sé parer ret += " "; ret += nombre.substr(decalage + 3 * i, 3); // On recupere le bloc de trois // chiffres }
return ret; }
madprog
Richard wrote:
Comment s'y prendre pour formater un nombre en chaine avec séparateur de
milliers français ??
1000000 => 1.000.000
merci
RM
je ferais :
std::string sepMilliers(const std::string &nombre)
{
int decalage = (nombre.size() - 1) % 3 + 1; // Nombre de chiffres à garder au
// début : 1, 2 ou 3
std::string ret = nombre.substr(0, decalage); // On les garde
for(int i = 0; i < (nombre.size() - 1) / 3; ++ i) // Ensuite, pour c haque bloc
// (nombre.size() / 3 blocs)
{
if(!ret.empty()) // On ajoute l'espace s'il y a quelque chose à sé parer
ret += " ";
ret += nombre.substr(decalage + 3 * i, 3); // On recupere le bloc de trois
// chiffres
}
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
1000000 => 1.000.000
merci
RM
je ferais :
std::string sepMilliers(const std::string &nombre) { int decalage = (nombre.size() - 1) % 3 + 1; // Nombre de chiffres à garder au // début : 1, 2 ou 3 std::string ret = nombre.substr(0, decalage); // On les garde
for(int i = 0; i < (nombre.size() - 1) / 3; ++ i) // Ensuite, pour c haque bloc // (nombre.size() / 3 blocs) { if(!ret.empty()) // On ajoute l'espace s'il y a quelque chose à sé parer ret += " "; ret += nombre.substr(decalage + 3 * i, 3); // On recupere le bloc de trois // chiffres }
return ret; }
madprog
Paul M.
Frédéric Momméja wrote:
Richard écrivait le 26/01/06 17:24 :
Comment s'y prendre pour formater un nombre en chaine avec séparateu r de milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espace . ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement p lus qualifiés que moi pour te répondre. :)
Je ferais :
def sepMilliers(nombre) :
decalage = (len(nombre) - 1) % 3 + 1 # Nombre de chiffres à garde r au début : # 1, 2 ou 3
ret = nombre[0:decalage] # On les garde
for i in range(len(nombre) / 3) : # Ensuite, pour chaque bloc # (il y a nombre.size() / 3 bloc s)
if len(ret) != 0 : ret += " " # On ajoute l'espace s'il y a quelque
# chose à séparer
# on recupere le bloc de trois c hiffres ret += nombre[decalage + 3 * i: decalage + 3 * (i+1)]
return ret
madprog
Frédéric Momméja wrote:
Richard écrivait le 26/01/06 17:24 :
Comment s'y prendre pour formater un nombre en chaine avec séparateu r
de milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espace . ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement p lus
qualifiés que moi pour te répondre. :)
Je ferais :
def sepMilliers(nombre) :
decalage = (len(nombre) - 1) % 3 + 1 # Nombre de chiffres à garde r au début :
# 1, 2 ou 3
ret = nombre[0:decalage] # On les garde
for i in range(len(nombre) / 3) : # Ensuite, pour chaque bloc
# (il y a nombre.size() / 3 bloc s)
if len(ret) != 0 : ret += " " # On ajoute l'espace s'il y a quelque
# chose à séparer
# on recupere le bloc de trois c hiffres
ret += nombre[decalage + 3 * i: decalage + 3 * (i+1)]
Comment s'y prendre pour formater un nombre en chaine avec séparateu r de milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espace . ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement p lus qualifiés que moi pour te répondre. :)
Je ferais :
def sepMilliers(nombre) :
decalage = (len(nombre) - 1) % 3 + 1 # Nombre de chiffres à garde r au début : # 1, 2 ou 3
ret = nombre[0:decalage] # On les garde
for i in range(len(nombre) / 3) : # Ensuite, pour chaque bloc # (il y a nombre.size() / 3 bloc s)
if len(ret) != 0 : ret += " " # On ajoute l'espace s'il y a quelque
# chose à séparer
# on recupere le bloc de trois c hiffres ret += nombre[decalage + 3 * i: decalage + 3 * (i+1)]
return ret
madprog
Amand Tihon
Frédéric Momméja wrote:
Richard écrivait le 26/01/06 17:24 :
Comment s'y prendre pour formater un nombre en chaine avec séparat eur de milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espa ce. ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement plus qualifiés que moi pour te répondre. :)
Il y a sans doute plus court. Il y a vraissemblablement plus optimisé. Il y a très certainement plus lisible. Néanmoins, voici une solution qui marche :
sepmil = lambda n: " ".join([n[::-1][3*i:3*i+3][::-1] for i in range(len(n)/3+1)][::-1]).strip()
L'idée derrière tout ça, pour ceux qui auraient du mal à saisir toute la beauté... euh... l'horreur de la chose, c'est de - retourner la chaîne - prendre les caractères par groupes de trois - retourner chaque groupe - retourner la liste des groupes - réassembler le tout en séparant par des espaces.
Le strip() à la fin est là pour le cas où la chaîne de départ contient un nombre de caractères multiple de 3.
Rho, j'ai (presque) honte :)
-- Amand Tihon
Frédéric Momméja wrote:
Richard écrivait le 26/01/06 17:24 :
Comment s'y prendre pour formater un nombre en chaine avec séparat eur de
milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espa ce. ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement plus
qualifiés que moi pour te répondre. :)
Il y a sans doute plus court.
Il y a vraissemblablement plus optimisé.
Il y a très certainement plus lisible.
Néanmoins, voici une solution qui marche :
sepmil = lambda n: " ".join([n[::-1][3*i:3*i+3][::-1] for i in
range(len(n)/3+1)][::-1]).strip()
L'idée derrière tout ça, pour ceux qui auraient du mal à saisir toute la
beauté... euh... l'horreur de la chose, c'est de
- retourner la chaîne
- prendre les caractères par groupes de trois
- retourner chaque groupe
- retourner la liste des groupes
- réassembler le tout en séparant par des espaces.
Le strip() à la fin est là pour le cas où la chaîne de départ contient un
nombre de caractères multiple de 3.
Comment s'y prendre pour formater un nombre en chaine avec séparat eur de milliers français ??
1000000 => 1.000.000
Le séparateur de milliers français n'est pas le point mais l'espa ce. ;)
1000000 => 1 000 000
Quant à la manière de l'obtenir il y a ici des gens extrêmement plus qualifiés que moi pour te répondre. :)
Il y a sans doute plus court. Il y a vraissemblablement plus optimisé. Il y a très certainement plus lisible. Néanmoins, voici une solution qui marche :
sepmil = lambda n: " ".join([n[::-1][3*i:3*i+3][::-1] for i in range(len(n)/3+1)][::-1]).strip()
L'idée derrière tout ça, pour ceux qui auraient du mal à saisir toute la beauté... euh... l'horreur de la chose, c'est de - retourner la chaîne - prendre les caractères par groupes de trois - retourner chaque groupe - retourner la liste des groupes - réassembler le tout en séparant par des espaces.
Le strip() à la fin est là pour le cas où la chaîne de départ contient un nombre de caractères multiple de 3.
Rho, j'ai (presque) honte :)
-- Amand Tihon
jean-michel bain-cornu
Bonjour, Richard wrote:
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
1000000 => 1.000.000 Ceux qui utilise habituelement WX peuvent prendre la classe NumCtrl
(voir un extrait de la doc ci-après). Les autres aussi, comme ça ils auront une belle usine à gaz en plus sur leur PC... Cette classe qu'on utilise pour la saisie peut aussi être utilisée pour le formattage, en sachant qu'il faut au moins une fenêtre wx, même si elle n'est pas visible. De plus, ça ne marche pas avec ' ' comme séparateur, il faut faire un replace après coup. Dans le genre simple, c'est pas vraiment réussi, mais ça donne une saisie formattée agréable pour l'utilisateur. A+ jm
Comment s'y prendre pour formater un nombre en chaine avec séparateur de
milliers français ??
1000000 => 1.000.000
Ceux qui utilise habituelement WX peuvent prendre la classe NumCtrl
(voir un extrait de la doc ci-après).
Les autres aussi, comme ça ils auront une belle usine à gaz en plus sur
leur PC...
Cette classe qu'on utilise pour la saisie peut aussi être utilisée pour
le formattage, en sachant qu'il faut au moins une fenêtre wx, même si
elle n'est pas visible. De plus, ça ne marche pas avec ' ' comme
séparateur, il faut faire un replace après coup.
Dans le genre simple, c'est pas vraiment réussi, mais ça donne une
saisie formattée agréable pour l'utilisateur.
A+
jm
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
1000000 => 1.000.000 Ceux qui utilise habituelement WX peuvent prendre la classe NumCtrl
(voir un extrait de la doc ci-après). Les autres aussi, comme ça ils auront une belle usine à gaz en plus sur leur PC... Cette classe qu'on utilise pour la saisie peut aussi être utilisée pour le formattage, en sachant qu'il faut au moins une fenêtre wx, même si elle n'est pas visible. De plus, ça ne marche pas avec ' ' comme séparateur, il faut faire un replace après coup. Dans le genre simple, c'est pas vraiment réussi, mais ça donne une saisie formattée agréable pour l'utilisateur. A+ jm
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
Bonjour. Est-ce que le résultat servira encore à des calculs ou pas?
merci à tous pour vos réponses
en l'occurrence il s'agit juste d'afficher un prix dans une appli zope, ce qui exclu WX
j'avais un peu honte de poser la question ici, parce que je pensai qu'il existait une fonction pour ca, mais que je ne l'avais pas trouvé... du coup je m'étonne qu'elle n'existe pas
RM
Richard :
Comment s'y prendre pour formater un nombre en chaine avec séparateur de
milliers français ??
Bonjour.
Est-ce que le résultat servira encore à des calculs ou pas?
merci à tous pour vos réponses
en l'occurrence il s'agit juste d'afficher un prix dans une appli zope,
ce qui exclu WX
j'avais un peu honte de poser la question ici, parce que je pensai qu'il
existait une fonction pour ca, mais que je ne l'avais pas trouvé...
du coup je m'étonne qu'elle n'existe pas
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ??
Bonjour. Est-ce que le résultat servira encore à des calculs ou pas?
merci à tous pour vos réponses
en l'occurrence il s'agit juste d'afficher un prix dans une appli zope, ce qui exclu WX
j'avais un peu honte de poser la question ici, parce que je pensai qu'il existait une fonction pour ca, mais que je ne l'avais pas trouvé... du coup je m'étonne qu'elle n'existe pas
RM
JB
Comment s'y prendre pour formater un nombre en chaine avec séparateur de milliers français ?? Le module locale ne fait pas l'affaire ?