J'ai un code simple:

with open('trace.txt') as inf:
    for line in inf:
        parts = line.split()
        lines = float(parts[1])

print lines[0]

Mais je reçois une erreur, pour ne pas pouvoir accéder au flotteur dans la liste:

TypeError: 'float' object has no attribute '__getitem__'

Quelle est la meilleure explication de l'erreur et comment y remédier?

-2
fieq.fikri 12 avril 2018 à 13:26

3 réponses

Meilleure réponse

Vous ne pouvez pas imprimer un élément d'un float, car float n'est pas une liste et n'implémente donc pas __getitem__.

lines = []
with open('trace.txt') as inf:
    for line in inf:
        parts = line
        lines.append(float(parts[1]))

print lines[0]

Si vous souhaitez imprimer un élément de votre liste, vous pouvez y accéder avec l'index.

1
alexeran 12 avril 2018 à 10:42

Le problème est que vous écrasez la variable lines à chaque itération de boucle avec la valeur du flottant. Au lieu de cela, vous souhaitez l'ajouter à une liste appelée lines:

lines = []
with open('trace.txt') as inf:
    for line in inf:
        parts = line.split()
        lines.append(float(parts[1]))

print lines[0]
0
Graipher 12 avril 2018 à 10:33
with open('trace.txt') as inf:
    lines = [float(parts[1]) for line in inf for parts in line.split()]
print lines[0]
0
Pradam 12 avril 2018 à 10:34