Seite 1 von 1

Stopwörter entfernen und neue Textdatei erstellen

Verfasst: Dienstag 29. September 2015, 18:31
von eloziomek
Hallo zusammen,
als blutiger Anfänger habe ich eine Frage zum Erstellen neuer Textdateien.

Das Entfernen der Stopwörter hat mit dem unten stehenden Code funktioniert, ich kann das Ergebnis aber nicht in eine neue Datei schreiben.

Fehlermeldung:
newfile.write(filtered_sentence)
TypeError: expected a character buffer object

Wie erstelle ich den Buffer und übergebe ihn in die neue Datei?
Für schnelle Antworten bin ich sehr dankbar! Micha

Code: Alles auswählen

example_datei = open('test.txt', 'r').read().split()
stop_words = open('stopwords.txt', 'r').read().split()

words = (example_datei)
filtered_sentence = [w for w in words if not w in stop_words]

newfile = open("newfile.txt", "w")
newfile.write(filtered_sentence)

example_datei.close()
stop_words.close()
newfile.close()

Re: Stopwörter entfernen und neue Textdatei erstellen

Verfasst: Dienstag 29. September 2015, 18:55
von BlackJack
@eloziomek: `filtered_sentence` ist halt eine Liste und da weiss die Methode nichts mit anzufangen. Mach aus dem Inhalt eine Zeichenkette in dem Du beispielsweise die einzelnen Elemente an einem Trennzeichen/einer Trennzeichenkette zusammenfügst. Zeichenketten haben da so eine praktische `join()`-Methode für.

Kritik am Quelltext: Dateien die man öffnet sollte man auch wieder schliessen. Am besten verwendet man das ``with``-Schlüsselwort. Die `close()`-Aufrufe gehen in zwei von drei Fällen schief weil es sich nicht um Objekte handelt die eine `close()`-Methode hätten.

Zeile 4 ist an sich schon sinnlos — die Klammern um die rechte Seite der Zuweisung machen ebenfalls keinen Sinn.

`stop_words` wäre aus effizienzgründen besser ein `set()` statt einer Liste.

Re: Stopwörter entfernen und neue Textdatei erstellen

Verfasst: Dienstag 29. September 2015, 18:57
von noisefloor
Hallo,

zusätzlich noch ein Zitat aus der Python-Doku in Bezug auf `write`: "To write something other than a string, it needs to be converted to a string first:"

Gruß, noisefloor

Re: Stopwörter entfernen und neue Textdatei erstellen

Verfasst: Dienstag 29. September 2015, 20:36
von eloziomek
@BlackJack
Danke! Hat geklappt!