Python erreur: impossible de convertir la chaîne de flotter
J'ai peu de code Python qui tire les ficelles d'un fichier texte:
[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854, ....]
Code Python:
v = string[string.index('['):].split(',')
for elem in v:
new_list.append(float(elem))
Cela donne une erreur:
ValueError: could not convert string to float: [2.974717463860223e-06
Pourquoi ne peut - [2.974717463860223e-06
être converti en float?
- Voyez-vous la
[
dans votre message d'erreur?
Vous devez vous connecter pour publier un commentaire.
Vous avez encore le
[
en face de votre "float" qui empêche l'analyse.Pourquoi ne pas utiliser un module pour qui? Par exemple:
ou
literal_eval
est le chemin à parcourir.literal_eval
évaluera uniquement certains code de structure de données, telles que des listes, des dicts, bool, etNone
.Vous pouvez effectuer les opérations suivantes pour convertir votre chaîne de caractères que vous lisez à partir de votre fichier à une liste de flotter
La raison que votre code est de ne pas, vous n'êtes pas le décapage de la '[' partir de la chaîne.
json.loads
ouast.literal_eval
n'existait pas, ce serait la meilleure façon d'accomplir la tâche.Vous êtes à la capture de la première tranche, le changement
string.index("[")
àstring.index("[") + 1
Cela vous donnera une liste de chars sans le besoin pour des importations etc.
index()
indice de rendement de caractère, de sorte que'['
est inclus dans la séquence retournée par[:]
.