J'ai un jeu de données simple de nombres de chaînes que je veux convertir en flottants. Pour une raison quelconque, les travaux suivants:Convertir la liste des chaînes en liste de flottants lorsque [float (i) for i in lst] ne fonctionne pas
dataset = open("data1.5.txt", "r")
array = dataset.read().split(", \n")
array2 = [float(array[0])]
print(array2)
Mais si je fais ce qui suit:
dataset = open("data1.5.txt", "r")
array = dataset.read().split(", \n")
array2 = [float(i) for i in array]
print(array2)
Je reçois l'erreur suivante:
ValueError Traceback (most recent call last)
<ipython-input-158-d3f4342981c6> in <module>()
1 dataset = open("data1.5.txt", "r")
2 array = dataset.read().split(", \n")
----> 3 array2 = [float(i) for i in array]
4 print(array2)
<ipython-input-158-d3f4342981c6> in <listcomp>(.0)
1 dataset = open("data1.5.txt", "r")
2 array = dataset.read().split(", \n")
----> 3 array2 = [float(i) for i in array]
4 print(array2)
ValueError: could not convert string to float:
Si je tente:
dataset = open("data1.5.txt", "r")
array = dataset.read().split(", \n")
array2 = [float(array[i]) for i in array]
print(array2)
J'ai l'erreur suivante:
TypeError Traceback (most recent call last)
<ipython-input-160-60a5ed9c866f> in <module>()
1 dataset = open("data1.5.txt", "r")
2 array = dataset.read().split(", \n")
----> 3 array2 = [float(array[i]) for i in array]
4 print(array2)
<ipython-input-160-60a5ed9c866f> in <listcomp>(.0)
1 dataset = open("data1.5.txt", "r")
2 array = dataset.read().split(", \n")
----> 3 array2 = [float(array[i]) for i in array]
4 print(array2)
TypeError: list indices must be integers or slices, not str
Et enfin, si je tente de passer par la carte(), je peux créer:
dataset = open("data1.5.txt", "r")
array = dataset.read().split(", \n")
array2 = map(float, array)
print(array2)
Mais qui retourne seulement un emplacement en Python 3; si je tente de le faire dans une liste comme ceci:
dataset = open("data1.5.txt", "r")
array = dataset.read().split(", \n")
array2 = list(map(float, array))
print(array2)
Je reçois une erreur encore:
ValueError Traceback (most recent call last)
<ipython-input-164-68394d0c25fd> in <module>()
1 dataset = open("data1.5.txt", "r")
2 array = dataset.read().split(", \n")
----> 3 array2 = list(map(float, array))
4 print(array2)
ValueError: could not convert string to float:
J'ai aussi essayé d'ajouter les valeurs à une nouvelle liste dans une boucle, mais en vain. Je suis assez nouveau à Python et c'est franchement déroutant ... Comment float() semble fonctionner pour une itération de mes données mais pas pour l'ensemble entier?
S'il vous plaît noter que la méthode float() fonctionne pour tout point de la matrice et l'impression du tableau me donne un « propre » liste de chaînes, voici un extrait:
['0.60237078', '0.404667', '0.081656125', '0.99716862', '0.70149429', '0.59545983', '0.97768306', '0.86360343', '0.57052565', '0.47777524', '0.040106169', ...]
Quelle est la valeur de 'array', juste avant la compréhension de la liste? Le résultat de 'split' avait probablement une chaîne d'espaces comme l'un de ses membres. –