À l'aide de readlines en python? Première fois
J'ai un fichier texte avec des colonnes de données, et j'ai besoin de transformer ces colonnes dans les listes individuelles ou de tableaux.
C'est ce que j'ai jusqu'à présent
f = open('data.txt', 'r')
temp = []
for row in f.readlines():
Data = row.split()
temp.append(float(Data[0]))
Lorsque je l'exécute-je obtenir IndexError: list index out of range
.
Extrait des données ci-dessous:
16 0.2000
17 0.3000
18 0.4000
20 0.5000
21 0.6000
22 0.7000
24 0.8000
25 0.9000
26 1.000
J'ai besoin de la première colonne, si possible pour ressembler à ceci:
Données = [16, 17, 18, 20, 21, 22, 24, 25, 26]
csv
est ton ami....ne devrait-ce pas être
for row in f.readlines():
ou plus simplement for row in f
?OriginalL'auteur user1762768 | 2012-10-21
Vous devez vous connecter pour publier un commentaire.
Vous obtenez une liste vide
Data=[]
si vous lisez une ligne vide. Vous essayez d'obtenir le premier élément de la liste à l'aide deData[0]
,mais parce que c'est une liste vide il n'a pas un élément à la position 0 de sorte que vous obtenez uneIndexError
.Cela permettra d'imprimer le
Data
siIndexError
occours - vous pouvez voir vous-même qu'il imprime une liste vide:Vous pouvez utiliser le
with
déclaration d'ouvrir le fichier, qui ferme automatiquement le fichier en cours de traitement. Aussi, vous pouvez passer en boucle le fichier lui-même, sans l'aide dereadlines()
.EDIT: Vous êtes mieux d'utiliser le module csv:
Je suis juste essayer d'obtenir les données dans une liste parce que j'ai besoin de l'utiliser ensuite pour effectuer une interpolation linéaire. Si j'utilise la dernière méthode que vous avez suggéré, (à l'aide de "et") qui me donne une liste que je peux ensuite utiliser plus tard dans ma interpolation? L'0,1, etc étaient juste des exemples de valeurs de données importées
si vous souhaitez utiliser l'interpolation de prendre un coup d'oeil sur les pandas de la bibliothèque (il peut importer les données dirctly partir d'un fichier csv), voici une interpolation exemple à l'aide de pandas comme une réponse à une précédente question stackoverflow.com/questions/12982792/...
Ok juste une question de plus, ce travail si je veux faire la même chose pour les autres colonnes de données?
oui, il le fera. il suffit de changer la ligne[0] à la ligne[1], si vous avez des lignes qui ont la première valeur et pas la seconde, vous devrez peut-être ajouter, si len(ligne)>1 pour éviter l'erreur d'index.
OriginalL'auteur root
l'utilisation par filehandlers.
vous index vient l'erreur en essayant d'accéder à
Data
à la[0]
emplacement.ce qui signifie tout simplement que votre ligne est vide.
vous devez exécuter une rapide vérification avant l'analyse de la ligne...
if len(Data):
et pasif len(Data) > 0:
.Burhan Khalid -- je ne peux pas vous alors tout simplement si des Données:?
non, parce que la liste est vide existe toujours.
>>> a=[]
>>> print a
[]
Inbar Rose -- >>> si un: ... print 'foo' ... else: print 'le" bar du bar ...
OriginalL'auteur Inbar Rose
J'espère que cela résout votre problème.
OriginalL'auteur okan kilic
OriginalL'auteur user4730171
x=1; while x==1: num_list,n=get(); if(n>20 ou n<3): print "n faut entre 3 et 20" pause si(b_no!=0): print "entrez correctement" pause cal() x=x+1;
Vous savez il y a un modifier), à droite?
OriginalL'auteur user4816019
Commentaires détruire mise en forme du code, en particulier dans les espaces significatifs des langues. Veuillez modifier votre réponse à inclure le code supplémentaire.
OriginalL'auteur user4816019
Je voudrais éviter d'utiliser des Données[0] ou row[0], au lieu de cela, je voudrais utiliser ".join(Données) ou ".join(ligne) pour éviter de vider la liste (list index out of range erreur).
OriginalL'auteur kevin