2017-09-23 7 views
-2
!curl https://raw.githubusercontent.com/MicrosoftLearning/intropython/master/worl 
d_temp_mean.csv -o mean_temp.txt 
weather = open('mean_temp.txt','a+') 
weather.write('Rio de Janeiro,Brazil,30.0,18.0\n"') 
weather.seek(0) 
headings = weather.readline() 
apple = headings.split(',') 
city_temp = weather.readline() 
orange = city_temp.split(',') 
while city_temp: 
    orange = city_temp.split(',') 
    print (apple[2] + ' of ' + orange[1] + ' is ' + orange[2] + ' Celsius') 
    city_temp = weather.readline() 
weather.close() 

Je ne comprends pas pourquoi il y a une erreur:Split et readline en Python - index de liste hors de portée

list index out of range

dans la sortie. J'ai essayé de séparer la readline et la scission pour m'assurer que la boucle while ne reçoive que la chaîne.

+2

pouvez-vous signaler l'erreur traceback aussi –

+2

Votre question a été marquée pour la qualité inférieure, et je vous écris en tant que critique. (1) Il serait utile à quiconque veut répondre à votre question si vous pouviez montrer une partie du contenu du fichier d'entrée, 'mean_temp.txt'. (2) Utiliser des noms comme 'apple' et' orange' rend votre code plus difficile à lire. Par exemple, pour 'apple', vous pouvez utiliser' heading_items' à la place. (3) Je suis d'accord avec @KalyanReddy. –

Répondre

0

Lorsque vous êtes à votre fichier annexant, vous finissez comme ceci:

city,country,month ave: highest high,month ave: lowest low 
Beijing,China,30.9,-8.4 
Cairo,Egypt,34.7,1.2 
London,UK,23.5,2.1 
Nairobi,Kenya,26.3,10.5 
New York City,USA,28.9,-2.8 
Sydney,Australia,26.5,8.7 
Tokyo,Japan,30.8,0.9Rio de Janeiro,Brazil,30.0,18.0 
" 

La ligne que vous ajoutez est à la fin AJOUT DE de la dernière ligne et non sur une nouvelle ligne. Vous obtenez donc un indice hors limites car vous n'avez pas ces indices sur la dernière ligne de votre fichier.

Essayer d'ajouter un retour chariot avant d'ajouter la nouvelle ligne.

+1

Ce n'est pas correct. Le fichier téléchargé est déjà terminé par un saut de ligne. Le problème réel est causé par une faute de frappe qui ajoute un '' 'à la chaîne qui est écrite dans le fichier, ce qui crée une ligne supplémentaire qui se divise en une liste avec un seul élément, lorsque le programme attend quatre. – ekhumoro