2017-11-01 1 views
1

Ich versuche derzeit Tweets für ein Projekt mit Python, Elasticsearch und Kibana zu streamen.IndentationError mit Python

Während ich mein Python-Skript ausführe, habe ich einen IndentationError und ich verstehe nicht warum, kann mir jemand durch dieses Problem helfen?

Vielen Dank im Voraus.

Mein Python-Skript:

import json 
import tweepy 
import textblob 
import elasticsearch 

from tweepy import OAuthHandler, Stream 
from tweepy.streaming import StreamListener 
from textblob import TextBlob 
from elasticsearch import Elasticsearch 

consumer_key = '...' 
consumer_secret = '...' 
access_token = '...' 
access_token_secret = '...' 

elastic_search = Elasticsearch() 

class MyStreamListener(StreamListener): 
    def on_data(self, data): 
     dict_data = json.loads(data) 
     tweet = TextBlob(dict_data["text"]) 

     print(tweet.sentiment.polarity) 

     if tweet.sentiment.polarity < 0: 
      sentiment = "negative" 
     elif tweet.sentiment.polarity == 0: 
      sentiment = "neutral" 
     else: 
      sentiment = "positive" 

     print(sentiment) 

     elastic_search.index(index="sentiment", 
       doc_type="test-type", 
       body={"author": dict_data["user"]["screen_name"], 
         "date": dict_data["created_at"], 
         "message": dict_data["text"], 
         "polarity": tweet.sentiment.polarity, 
         "subjectivity": tweet.sentiment.subjectivity, 
         "sentiment": sentiment}) 

     return True 

    def on_failure(self, status): 
     print(status) 

if __name__ == '__main__': 
    listener = MyStreamListener() 

    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 

    stream = Stream(auth, listener) 
    stream.filter(track=['congress']) 

# user_choice = input("Please choose a Hashtag... : ") 
# retrieve_tweets = api.search(user_choice) 

Die Fehlermeldung:

File "sentiment.py", line 21 
    tweet = TextBlob(dict_data["text"]) 
            ^
IndentationError: unindent does not match any outer indentation level 
+0

Sind Sie Tabs, durch Zufall mit? suche und ersetze '\ t' mit 4 Leerzeichen überall. – Elazar

+0

Siehe zum Beispiel [hier] (https://stackoverflow.com/questions/17076302/possible-mixed-indentation-in-python) – Elazar

+0

Hallo @Elazar, ich verwende keine Tabs und wie Sie sagten, ich habe 4 Leerzeichen –

Antwort

3

Sie tun Tabs dort haben.

def on_data(self, data): 
     dict_data = json.loads(data) 
#^tab and 4 spaces here 
     tweet = TextBlob(dict_data["text"]) 
#^8 spaces here   
     print(tweet.sentiment.polarity) 
#^^ two tabs here (equal 16 spaces) 

Beachten Sie, dass die Darstellung in SO-Website die Tabs in Leerzeichen übersetzt, aber der Editor-Modus zeigt die Registerkarten:

indentation

+0

Wie können Sie das sagen? Wenn ich E Ajanthans Text kopiere, erhalte ich alle Leerzeichen. – Teodor

+1

Kopieren Sie es aus dem Editor-Modus. – Elazar

+0

@Elazar Toller Tipp - Ich habe das nicht herausgefunden. – SiHa

Verwandte Themen