Ich schreibe eine Funktion, die eine Liste von Textelementen durchläuft - jedes Element analysiert und die analysierten Elemente wieder an eine Liste anfügt. Der Code ist als unten:Listenindex außerhalb des Bereichs - Indexfehler Python
clean_list = []
def to_words(list):
i = 0
while i <= len(list):
doc = list[i]
# 1. Remove HTML
doc_text = BeautifulSoup(doc).get_text()
# 2. Remove non-letters (not sure if this is advisable for all documents)
letters_only = re.sub("[^a-zA-Z]", " ", doc_text)
# 3. Convert to lower case, split into individual words
words = letters_only.lower().split()
# 4. Remove stop words
stops = set(stopwords.words("english"))
meaningful_words = [w for w in words if not w in stops]
# 5. Join the words back into one string separated by space, and return the result.
clean_doc = (" ".join(meaningful_words))
i = i+1
clean_list.append(clean_doc)
Aber wenn ich die Liste in dieser Funktion übergeben, to_words(list)
, bekomme ich diesen Fehler: IndexError: list index out of range
ich experimentieren versuchte ohne technisch Definition der to_words
Funktion dh die Schleife zu vermeiden, Manuelles Ändern von i als 0,1,2 usw. und Folgen der Schritte der Funktion; das funktioniert gut.
Warum sehe ich diesen Fehler, wenn ich die Funktion (und Schleife) verwende?
Können Sie hier vollständige Rückverfolgung geben? –
Eine Liste der Länge 5 hat Indizes '0, 1, 2, 3, 4'. - Ihr 'while i <= len (list)' gibt 'i' die Werte' 0, 1, 2, 3, 4, 5'. Ändern Sie es in 'while i
asongtoruin
Verwenden Sie auch nicht den Variablennamen 'list', da dies zu Verwechslungen mit dem Objekttyp' list' führt. – asongtoruin