2016-11-16 6 views
0

プログラムは、数値の値を持つキーワードのファイルを読み込んでいます。それからそれは緯度と経度とツイートのテキストを含む数千のつぶやきのファイルを読み込んでいます。つぶやきを特定の地域にソートし、最初の文書のキーワードと値に基づいて各地域の感情平均を計算する必要があります。ユーザーはこれらを2つのファイルに入力する必要があり、例外エラーが発生したtryステートメントが必要です。これらの関数は、適切な値を計算するために単独で動作しますが、try文に入れるときに、次のエラーが発生します。ユーザー入力ファイルを読み込んで例外を使用してループする関数を実装する

トレースバック(最新の呼び出し最後):129行目のmain()と16行目のsortKets 。そして最後のエラーライン56キーワード[lines [0]] = int(lines [1])IndexError:リストインデックスの範囲外 私はそれを修正するために何かできますか?

リスト項目

eastern = [] 
central = [] 
mountain = [] 
pacific = [] 
keyword = {} 
easternsum =[] 
centralsum= [] 
mountainsum = [] 
pacificsum = [] 
    def main() : 
    done = False 
    while not done: 
     try: 
      keys = input("Enter file: ") 
      readkeys(keys) 
      sortKeys(keys) 

      tweets = input("Enter second file: ") 
      readtweets(tweets) 
      sorttweet(tweets) 


      calcsentiment() 
      print("The eastern amount of tweets is",len(easternsum)) 
      print("The eastern happiness score    is",sum(easternsum)/len(easternsum)) 
      print("The central amount of tweets is",len(centralsum)) 
     print("The central happiness score is",sum(centralsum)/len(centralsum)) 
     print("The mountain amount of tweets is",len(mountainsum)) 
     print("The mountain happiness score is",sum(mountainsum)/len(mountainsum)) 
     print("The pacific amount of tweets is",len(pacificsum)) 
     print("The pacific happiness score is",sum(pacificsum)/len(pacificsum)) 
     done = True 

    except IOError: 
     print("Error, file not found.") 

    except ValueError: 
     print("Invalid file.") 

    except RuntimeError as error: 
     print("Error", str(error)) 



def readkeys(keys): 
    keys = open(keys, "r") 

def readtweets(tweets): 
    tweets = open(tweets, "r") 



def sortKeys(keys): 
    for line in keys : 
     lines = line.split(",") 
     keyword[lines[0]] = int(lines[1]) 

def sorttweet(tweets) : 
    for line in tweets : 
     stuff = line.split(" ",5) 
     long = float(stuff[0].strip("[,")) 
     lat = float(stuff[1].strip('],')) 
     tweet = stuff[5] 
     if 24.660845 < long < 49.189787 and -87.518395 < lat < -67.444574 : 
      eastern.append(tweet) 
     if 24.660845 < long < 49.189787 and -101.998892 < lat < -87.518395 : 
      central.append(tweet) 
     if 24.660845 < long < 49.189787 and -115.236428 < lat < -101.998892 : 
      mountain.append(tweet) 
     if 24.660845 < long < 49.189787 and -125.242264 < lat < -115.236428 : 
      pacific.append(tweet) 




def calcsentiment(): 
    for tweet in eastern : 
     tweetlist = tweet.split() 
     count = 0 
     tweetV = 0 
     for word in tweetlist: 
      if word in keyword : 
       count = count + 1 
       tweetV = tweetV + keyword[word] 
     if count > 0: 
      easternsum.append(tweetV/count) 

for tweet in central: 
    tweetlist2 = tweet.split() 
    count = 0 
    tweetV = 0 
    for word in tweetlist2 : 
     if word in keyword : 
      count = count + 1 
      tweetV = tweetV + keyword[word] 
    if count > 0: 
     centralsum.append(tweetV/count) 


for tweet in mountain: 
    tweetlist3 = tweet.split() 
    count = 0 
    tweetV = 0 
    for word in tweetlist3 : 
     if word in keyword : 
      count = count + 1 
      tweetV = tweetV + keyword[word] 
    if count > 0: 
     mountainsum.append(tweetV/count) 

for tweet in pacific: 
    tweetlist4 = tweet.split() 
    count = 0 
    tweetV = 0 
    for word in tweetlist4 : 
     if word in keyword : 
      count = count + 1 
      tweetV = tweetV + keyword[word] 
    if count > 0: 
     pacificsum.append(tweetV/count) 
calcsentiment() 







main() 
+0

私はあなたが*つぶやきを並べ替える必要があると思う。 – Ukimiku

答えて

0

あなたはここに問題を抱えている:

def sortKeys(keys): 
    for line in keys : 
     lines = line.split(",") 
     keyword[lines[0]] = int(lines[1]) 

あなたが行を分割するとき、あなたは2つのトークン、ちょうど1を得ることはありません。 分割しようとしている行に '、'文字が含まれていない場合に発生します。 Pythonコンソールで何か "xxxx"の.split( "、")を試してみると、結果は["xxxx"]なので、コード行[1]リストの2番目の要素。

関連する問題