2009-09-06 8 views
2

Je cours un code pour sélectionner des morceaux d'un gros fichier. Je reçois une erreur étrange qui estpython Littéral invalide pour float

"Invalid literal for float(): E-135" 

Est-ce que quelqu'un sait comment résoudre ce problème? Merci d'avance.

En fait, c'est la déclaration qui donne de moi error

float (line_temp[line(line_temp)-1]) 

Cette instruction produit une erreur line_temp est une chaîne « ligne » est une ligne dans un fichier ouvert et aussi une chaîne.

+0

veuillez éditer votre question avec le plus petit échantillon de code possible ET échantillon de données qui peut reproduire l'erreur –

+0

Oui. C'est fait. Veuillez revérifier. –

+0

alors, qu'est-ce que «x» et «y»? sont-ils des ficelles? ils ne peuvent pas l'être parce que cela augmenterait 'TypeError'. Sont-ils des flotteurs? alors pourquoi les convertis-tu pour flotter? Ce n'est pas un échantillon de données qui peut reproduire l'erreur. – SilentGhost

Répondre

6

Vous avez besoin d'un numéro, de l'E pour en faire une représentation de chaîne valide d'un nombre flottant

>>> float('1E-135') 
1e-135 
>>> float('E-135') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for float(): E-135 

En fait, ce nombre est E-135 censé représenter? 1x10^-135?

Les formes littérales valides pour les flotteurs sont here.

+0

veuillez vérifier à nouveau la question –

3

On dirait que vous essayez de convertir une chaîne en un flotteur. Si la chaîne est E-135, il s'agit bien d'une valeur non valide à convertir en float. Peut-être que vous êtes en train de couper un chiffre au début de la chaîne et il devrait vraiment être quelque chose comme 1E-135? Ce serait un flotteur valide.

+0

veuillez vérifier la question ici –

+0

veuillez vérifier à nouveau la question –

1

Puis-je vous suggère de remplacer

float(x-y) 

avec

float(x) - float(y) 
+0

Non en fait j'ai besoin de cette sortie sous cette forme comme 1e-35. ça doit être comme ça ou e-35. –

1

Ronald, veuillez vérifier les réponses à nouveau. Ils ont raison. Ce que vous faites est: float (EXPRESSION), où le résultat de EXPRESSION est E-135. E-135 n'est pas une entrée valide dans la fonction float(). Je n'ai aucune idée de ce que "line_temp [line (line_temp) -1]" fait, mais il renvoie des données incorrectes pour la fonction float().