61 votes

Comment convertir une chaîne de devises en un nombre à virgule flottante en Python ?

J'ai quelques chaînes représentant des nombres avec un format de devise spécifique, par exemple :

money="$6,150,593.22"

Je veux convertir cette chaîne en un nombre

6150593.22

Quelle est la meilleure façon d'y parvenir ?

0voto

user3403267 Points 9

J'ai créé cette fonction il y a quelques années pour résoudre le même problème.

def money(number):
    number = number.strip('$')
    try:
        [num,dec]=number.rsplit('.')
        dec = int(dec)
        aside = str(dec)
        x = int('1'+'0'*len(aside))
        price = float(dec)/x
        num = num.replace(',','')
        num = int(num)
        price = num + price
    except:
        price = int(number)
    return price

0voto

Gunberi Points 1

Cette fonction a converti le format de prix turc en nombre décimal.

money = '1.234,75'
def make_decimal(string):
    result = 0
    if string:
        [num, dec] = string.rsplit(',')
        result += int(num.replace('.', ''))
        result += (int(dec) / 100)
    return result
print(make_decimal(money))
1234.75

0voto

shlomiLan Points 140

C'est la méthode la plus simple que j'ai trouvée, sans avoir à coder en dur ou à jouer avec la détection des devises :

>>> money="$6,150,593.22"
>>> amount = float("".join(d for d in money if d.isdigit()))
>>> amount
615059322.0

credit: https://www.reddit.com/r/learnpython/comments/2248mp/how_to_format_currency_without_currency_sign/cgjd1o4?utm_source=share&utm_medium=web2x

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X