Python 2.7.3 IndentationError: s'attendre à un retrait du bloc - peux pas trouver l'erreur
Je suis nouveau sur le python et d'essayer de soumettre ma HW sur Coursera Données de cours de Sciences. L'environnement, il est VM en cours d'exécution Python 2.7.3, le fichier tweet_sentiment.py je suis en train de lancer a le script suivant à l'intérieur:
import sys
import json
def hw():
print 'Hello, world!'
def lines(fp):
print str(len(fp.readlines()))
def main():
sent_file = open(sys.argv[1])
tweet_file = open(sys.argv[2])
# hw()
# lines(sent_file)
# lines(tweet_file)
myfile = open(sys.argv[1], 'r')
lines = myfile.readlines()
mydict = {}
for line in lines:
key, value = line.split("\t")
mydict[key] = int(value)
twit_file = open(sys.argv[2], 'r')
twit_lines = twit_file.readlines()
mylist = []
for line in twit_lines:
mylist.append(json.loads(line))
for listik in mylist:
twit_value = 0
twit_text = listik["text"]
twit_words = twit_text.split()
for word in twit_words:
if word in mydict:
twit_value = twit_value + 1
print float(twit_value)
if __name__ == '__main__':
main()
Lors de l'exécution de $ python tweet_sentiment.py j'obtiens l'erreur suivante:
File "tweet_sentiment.py", line 25
key, value = line.split("\t")
^
IndentationError: expected an indented block
Merci pour tous les conseils!
Sergey
Pensez-y de cette façon: Un
Aussi, vous avez le même problème avec au moins un des deux endroits:
Enfin, il est intéressant de noter que tous l'une des boucles d'erreurs (que j'ai remarqué, au moins) pourrait être remplacé par une ligne de compréhension de liste, dict compréhension, ou
essayez de modifier la question et déplacer le curseur vers la gauche et la droite sur ces espaces, vous verrez les onglets.
En fait, on dirait qu'il a des tabulations et des espaces dans la même ligne, pour rendre les choses encore plus confuses. C'est pourquoi je upvoted votre réponse.
for
instruction ne passe en boucle sur les lignes qui sont en retrait. Puisque vous n'avez pas de lignes en retrait, il n'a rien à faire. Depuis c'est presque certainement pas ce que vous voulez, Python est d'être belle et de vous donner une erreur, au lieu de le traiter comme une boucle de déchets qu'un tas de temps à faire absolument rien.Aussi, vous avez le même problème avec au moins un des deux endroits:
for line in twit_lines:
et if word in mydict:
.Enfin, il est intéressant de noter que tous l'une des boucles d'erreurs (que j'ai remarqué, au moins) pourrait être remplacé par une ligne de compréhension de liste, dict compréhension, ou
collections.Counter
, ce qui signifie que vous n'avez même pas besoin de tiret rien ici de toute façon...essayez de modifier la question et déplacer le curseur vers la gauche et la droite sur ces espaces, vous verrez les onglets.
En fait, on dirait qu'il a des tabulations et des espaces dans la même ligne, pour rendre les choses encore plus confuses. C'est pourquoi je upvoted votre réponse.
OriginalL'auteur Sergey Samusev | 2013-05-14
Vous devez vous connecter pour publier un commentaire.
Être prudent! Vous êtes de mélange des tabulations et des espaces pour l'indentation.
Souvent un onglet s'affiche comme l'équivalent de 8 places. Ainsi, lors de l'utilisation de la pratique courante de 4 espaces, elle semble comme 2 niveaux d'indentation, mais c'est vraiment seul.
Lorsque j'examine votre code dans l'éditeur, je vois que vous avez au moins à deux endroits. Remplacer les onglets avec 4 espaces.
OriginalL'auteur John La Rooy
Comme il est dit, vous avez une échancrure d'erreur. Ligne 25, il convient de rectifier cette:
OriginalL'auteur matthewfisher
Vous devez tiret à la ligne après un
for
bloc. Votre code devrait ressembler à:OriginalL'auteur Xymostech
Votre code doit être comme ceci:
C'est la même chose pour toutes les autres pour l'.
OriginalL'auteur fhelwanger
Essayer:
L'indentation pour la
for
états est foiré. Lefor
bloc doit être en retrait. Aussi, comme mentionné avant, Python renvoie une erreur si vous mélangez des tabulations et des espaces. Utiliser tous les espaces(remplacer chaque onglet avec 4 espaces) ou tous les onglets(à remplacer tous les 4 espaces avec un onglet).Vous êtes les bienvenus! L'erreur était une erreur d'indentation. Aurait eu quelque chose à faire avec...et bien...je ne sais pas vraiment. Tout ce que je peux dire, c'est...bonne chance! Peut-être que le retrait était comme un espace hors tension ou n'est pas en corrélation avec le reste du fichier. J'ai apparence novice erreur tout le temps.
OriginalL'auteur kirbyfan64sos
Utilisation
vim
pour l'ouvrir. Et puis tapez le commoand:retab
Il montre ensuite la ligne n'est pas correctement en retrait.
OriginalL'auteur Peng Zhang