0
votes

Impossible de lire les données du fichier CSV et de stocker dans le dictionnaire

Contexte: Construire un Simple STOCK MAINTER, en utilisant un fichier CSV pour stocker et lire des données.

Données en stock Fichier: P>

products[line[0]] = line[1]  
IndexError: list index out of range  
['product 1', '[200, 35.5, 37.0]']  
{'product 1': '[200, 35.5, 37.0]'}


6 commentaires

Les deux commandes d'impression à la fin sont simplement de vérifier et de trouver la source d'erreur.


Selon la plate-forme, vous devrez peut-être ouvrir le fichier en mode binaire - voir le Documentation .


Il n'y a rien de mal dans ce que vous avez. Peut-être que vos données n'avaient pas raison lorsque vous l'avez essayé. Essayez de créer un fichier de données à nouveau.


Pouvez-vous vérifier s'il existe une ligne vide dans le fichier stock.csv ou ajoutez une instruction d'impression Imprimer (ligne) avant les produits [Ligne [0]] = ligne [1]


@meowgoestHedog qui ne fonctionne pas.


@Manumathew J'ai fait ce que vous avez suggéré, tout en essayant de trouver moi-même la source d'erreur. Lors de l'impression de la ligne avant d'utiliser ses indices comme clé: valeur, le magasin de données est imprimé sous forme de liste. Sortie >>> ['Produit 1', '[200, 35.5, 37.0]'] suivi de IndexError


3 Réponses :


1
votes

en python, les tableaux sont indexés zéro (c.-à-d.: ligne [0] est le premier élément, ligne [1] est le second, etc.)
Ici: produits [ligne [0]] = ligne [1] , vous essayez d'accéder au deuxième élément de la ligne , mais à partir de votre exemple, le Le fichier CSV ne contient qu'une seule ligne, d'où l'erreur.


2 commentaires

Dans la question, l'utilisateur tente d'accéder aux premier et deuxième éléments de la première ligne et de ne pas essayer d'accéder à une deuxième ligne.


La ligne [0] est le nom du produit tandis que la ligne [1] est les détails stockés sous forme de liste dans le fichier CSV. Les deux accèdent simplement à la première ligne de données du fichier CSV. S'il vous plaît refroser / chèque. Merci :)



0
votes

Les données de votre fichier stock ont ​​une seule ligne:

produit 1, "[200, 35.5, 37.0]"

Ainsi, lorsque vous essayez d'obtenir la ligne [1] dans la ligne 7, vous essayez d'obtenir les données dans la ligne 2 de vos données, qui n'existent pas.


2 commentaires

Dans la question, l'utilisateur tente d'accéder aux premier et deuxième éléments de la première ligne et de ne pas essayer d'accéder à une deuxième ligne.


Ce que j'essaie de faire en utilisant la boucle 'for Line', vous obtenez la ligne de chaque ligne du fichier CSV sous forme de liste. Plus tard, j'utilise cette liste pour accéder aux données réelles (avec le nom en tant que 0e index et liste de détails sous forme de 1er index). Et je suis incapable de trouver l'erreur de le faire moi-même.



0
votes

de Cette réponse

Ce qui vous manque, c'est P>

SkitinitialSpace = true p> blockquote>

dans votre CSV_Reader. p>

Voici le code qui a fonctionné: p> xxx pré>

et le résultat: p>

{'product 1': '[200, 35.5, 37.0]'}


1 commentaires

Pour une raison quelconque, quelle que soit la combinaison des indices de liste que j'utilise >>> p [ligne [0]] = ligne [1] ou >>> p [ligne [0]] = p [ligne [0], l'erreur existe toujours ( index de liste hors de portée)