0
votes

Convertir des chaînes en flotteur et en entiers (si nécessaire) en python

Je dois appeler une API qui me renvoie parfois des valeurs numériques au format de chaîne, "288" au lieu de 288 ou "0,1523" au lieu de 0.1513 . Quelques autres fois, je reçois la valeur numérique appropriée, 39 .

Comment puis-je faire fonctionner la fonction à la valeur correcte? Cela signifie:

  • Si je reçois "288" le convertir en entier: 288 .
  • Si je reçois "0.323" Convertissez-le en un flotteur: 0.323 .
  • Si je reçois 288 laissez-le comme il est (c'est déjà un entier déjà).
  • Si je reçois 0.323 partir tel qu'il est (c'est déjà un flotteur).

    C'est mon essai. La chose est que cela me convertit aussi tous les flotteurs en entiers et je ne veux pas cela. Est-ce que quelqu'un peut me donner la main? xxx

    merci d'avance


1 commentaires

Pourquoi faites-vous une distinction entre flotteur et int? Pour la plupart des usecases float (valeur) suffit.


3 Réponses :


1
votes

Utilisez Suivant:

def convert(self, value)
    a=value
    b=float(a)
    if(b==int(b)):b=int(b) 
    
    print(b)


0 commentaires

1
votes
def parse_value(value):
    try:
       print(type(value))
       if type(value) is float:
           print(value)
       elif type(value) is int:
           print(value)
       elif type(value) is str:
           value = float(value)
           print(value)

    except ValueError:
        try:
           print(value)
        except ValueError:
            pass

0 commentaires

0
votes

Cela fonctionnerait-il pour vous?

def parse_value(value):
    f = float(value)
    r = f if f != int(f) else int(f)
    return r


0 commentaires