前提・実現したいこと
python初心者です。インデックス番号が2,5,8,11...と3の倍数-1の要素だけ削除したいです。
良い解法が出せないので困っています。
一応全体のソースコードを載せますが、一番下のところだけが問題だと思います。
wordsには318個の要素が入っています。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-32-ca1e62ab6cf2> in <module> 1 num = 2 2 for i in words: ----> 3 del words[num] 4 num += 3 IndexError: list assignment index out of range
該当のソースコード
from urllib import request from bs4 import BeautifulSoup import csv url = "https://yattoke.com/2019/03/04/english-tools-word/" html = request.urlopen(url) soup = BeautifulSoup(html,"html.parser") #英単語があるセルを抽出 word_cells = soup.find_all("td") #コンテンツを抽出 words = [] for word_cell in word_cells: words.append(word_cell.text) print(words) num = 2 for i in words: del words[num] num += 3
試したこと
恐らく繰り返しで要素を消していっているので、インデックス番号がずれていっています。
そして、del words[num]の部分で、ずれて存在しなくなったインデックス番号の要素を消そうとしているのでエラーを起こしているのではないかと思います。
一応、
num = 2 for i in words: del words[num] num += 2 if num>213: break print (words)
と書くと期待通りに動くのですが、もっと良い書き方を知りたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。