Convertir Python chaînes en flotte explicitement à l'aide de la virgule ou le point comme séparateurs
Comment puis-je indiquer explicitement python pour lire un nombre décimal en utilisant le point ou la virgule comme séparateur décimal? Je ne connais pas les paramètres de localisation de l'ordinateur et exécuter mon script, et cela ne devrait pas influencer ma demande, je veux seulement dire:
f = read_float_with_point("3.14")
ou
f = read_float_with_comma("3,14")
Je pense que l'écriture
def read_float_with_comma(num):
return float(num.replace(",", ".")
n'est pas sûr, parce que je ne connais pas les paramètres régionaux!
Qu'est-ce que
exactement, ça dépend de la locale.
1,000
: un ou mille?exactement, ça dépend de la locale.
OriginalL'auteur diegogb | 2012-11-13
Vous devez vous connecter pour publier un commentaire.
Vous pourriez chercher à l'aide de la
locale
module:ou
À l'aide de, votre code peut devenir:
Mieux encore, le même module a une fonction de conversion pour vous, appelé
atof()
:pour de simples scripts ou de bureau des programmes graphiques ou toute autre chose qui n'a pas besoin d'en faire plusieurs (en réseau) des clients.
mais l'OP voulait savoir plus précisément ce que le PC sur lequel son script d'exécution serait de l'utiliser, c'est exactement ce qu'on voulait. C'est pourquoi l'OP marqué cette réponse est acceptée; leur problème a été résolu.
Eh bien, pas vraiment: l'OP a voulu forcer un format indépendant de la localisation en cours. Ce qui signifie, soit réinventer la roue de la mise en œuvre de sa propre fonction pour analyser avec une virgule ou un point, ou de force une locale qui utilise ce dont il a besoin dans chaque cas. Mais en changeant les paramètres régionaux sont découragés et lent, de sorte que toute application implémentée à l'aide de cet endroit, le changement ne doit le faire qu'une fois (de préférence au début de l'application). Cette application sera très strict: il ne parse / de sortie dans un format pré-défini, et de modification nécessitera un redémarrage. Je ne vois pas comment cela peut être bon pour une interface graphique.
bien sûr, à l'aide de
locale
peut être douloureux. Mais j'ai bien compris la question: je veux savoir ce que le séparateur de la locale utilise, à titre de représentant des nombres en virgule flottante. Quelles sont les autres options sont là pour interroger le système d'exploitation pour que l'information?OriginalL'auteur Martijn Pieters
Vous pouvez utiliser
locale.atof
http://docs.python.org/2/library/locale.html
OriginalL'auteur alex_jordan
Vous pouvez utiliser babel pour analyser les décimales dans les locaux formats:
OriginalL'auteur Aidas Bendoraitis