• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:python リストのプログラムがうまくいかない)

Pythonリスト処理のエラー解決法

このQ&Aのポイント
  • Google ColabでPythonを使用して、記事の単語数をカウントするプログラムを実行しているが、Index out of rangeエラーが発生している。
  • プログラムは記事を読み込んで単語ごとのカウント行列を作成するもので、負の数の単語に対処できていない可能性がある。
  • エラーの原因を探り、データの整合性やループの範囲を確認する必要がある。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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') のような処理ができます。

Harusann0408
質問者

お礼

す、すごい!!動きました!!! enumerateとかsplitとかプログラムの改善方法まで教えてくれてありがとうございます!!!これからも勉強頑張ります!ありがとうございました!

Powered by GRATICA

関連するQ&A