- ベストアンサー
Pythonリスト処理のエラー解決法
- Google ColabでPythonを使用して、記事の単語数をカウントするプログラムを実行しているが、Index out of rangeエラーが発生している。
- プログラムは記事を読み込んで単語ごとのカウント行列を作成するもので、負の数の単語に対処できていない可能性がある。
- エラーの原因を探り、データの整合性やループの範囲を確認する必要がある。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> list_count[i][list_words.index(word)] = int(list_articles[i][j][col+1:]) list_countはlist_wordsに入っていないwordが現れたときに追加されるので、最初の添え字はlist_wordsのindexとなるから、添え字の順序が逆です。 間違いではないけど、改めた方が良い部分もかなりあります。 > with open('/content/drive/MyDrive/train.processed') as f: > articles = f.readlines() # 記事を読み込む ここでファイルの読み込みは終わっているので、その後の処理はwithの外にしたほうがいいとか、 > for article in articles: > list_articles.append(article.split()) # 記事ごとに[単語:単語数]で配列に入れる(二次元) これは、 list_articles = [article.split() for article in articles] にできるとか、 > for i in range(x): # x=記事数 とするよりも for i, article in enumerate(artilce_list): とすればarticle_list[i]をarticleにすることができてわかりやすくなるとか。 さらに、find(':')で位置を求めて分割するよりも、split(':')を使ったほうが便利です。 splitted_article = list_articles[i][j].split(':') こうすると、'::3'のようなデータの場合はlen(splitted_article)==3となるので、 if len(splitted_article)==2: word = splitted_article[0] word_count = splitted_article[1] elif len(splitted_article)==3: word = ':' word_count = splitted_article[2] else: print('error') のような処理ができます。
お礼