ValueError: invalid littéral pour float() en Python
À tous:
Je curieux de savoir si quelqu'un peut m'aider à comprendre l'erreur: ValueError: invalid littéral pour float(). Je suis quand je suis de passage d'un fichier texte à une liste d'essayer ensuite de le convertir cette liste de valeurs flottantes.
a = open("input.txt","r")
lines = a.readlines()
b = map(float, lines)
Ce qui est bizarre, au moins pour moi, c'est que lorsque j'ai procédé:
print repr(lines[0])
J'obtiens:
'0.000\t0.000...\t0.000\t0.000\n'
et
print type(lines[0])
J'obtiens:
<type 'str'>
Je ne comprends pas pourquoi la carte(float, lignes) ne fonctionne pas correctement. Suis-je à l'aide de cette fonction de façon incorrecte? Regarder la documentation de la carte de fonction est donnée sous la forme: carte(fonction, itératif, ...). Une liste non itératif?
Aussi si quelqu'un pouvait expliquer cette erreur/me pointer dans la direction d'une explication de cette erreur, je vous en serais très reconnaissante.
Merci à l'avance pour aider avec cette question.
- Dites-vous que
0.000\t0.000...\t0.000\n
est sur une seule ligne? Si oui, alors je suppose que c'est ce qui est transmis dansfloat()
et il ne peut pas convertir. Semble que vous auriez besoin de les diviser en différentes valeurs flottantes. Est-ce le cas? - Oui c'est sur une seule ligne, mais quand j'processus, il semble le faire à travers un certain nombre de valeurs, puis me donne l'erreur: b = map(float, lignes) ValueError: invalid littéral pour flotteur(): 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0. Est n'est pas réellement le faire à travers les valeurs?
- Qui ressemble exactement à la chaîne que vous avez noté ci-dessus, mais avec le
\t
affiche sous la forme d'espaces (c'est à dire un réel caractère de tabulation). C'est tout un littéral de chaîne, n'est pas un tas de courts, je suppose. - Ce serait plus logique. Il est tout simplement en la regardant comme une seule chaîne. Merci pour l'aide.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin readlines dans ce cas, c'est un gaspillage de temps et de mémoire.
Si vous voulez une liste de listes de la flotte:
ou juste un gros liste de la flotte:
La
ValueError
est à venir à partir de la\t
caractère dans la chaîne. Vous devez séparer chaque ligne dans les colonnes individuelles avant la conversion de chacun d'eux individuellement.a.readlines()
est une liste de chaînes, de sorte que vous tentez de convertirfloat('0.000\t0.000\t0.000\t0.000\n')
dans votre carte, ce qui explique l'erreur que vous voyez.Vous avez besoin de faire un peu plus de traitement (voir les commentaires en ligne):