Seite 1 von 1
Anteil eines Buches
Verfasst: Freitag 23. November 2012, 00:52
von MarcelF6
Guten Abend
Ich habe eine simple Frage: Wie kann ich zB 20% eines nltk-Buches extrahieren?
Ich dachte an sowas, aber das scheint nicht zu klappen, wegen dem Index:
Code: Alles auswählen
def percentage(liste, prozent):
nr = 0
for line in liste:
nr += 1
anteil = (nr/100)*prozent #bis hier ok
txt = liste[0:anteil] # ich möchte den Textanteil so haben, dass ich ihn nachher gut weiterverarbeiten kann (am besten nicht in einer Liste...)
for word in txt:
print word # do something
Danke,
Marcel
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 01:24
von BlackJack
@MarcelF6: *Hust*, schau Dir mal bitte die `len()`-Funktion an.
Was klappt denn an dem Index nicht? Explodiert der Rechner? Bekommst Du ein unerwartetes Ergebnis? Falls ja, worin unterscheidet es sich vom Erwarteten?
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 09:00
von MarcelF6
Ah, also
anteil = (len(liste)/100)*prozent
Aber: Bei der Weiterverarbeitung kommt weiterhin die Fehlermeldung:
"slice indices must be integers or None or have an __index__ method"
Ich sollte den Textanteil wohl besser nicht in Listenform (d.h. jedes Wort als Listeneintrag) haben, oder?
Wie ist das möglich?
(oder wie wäre sonst eine Weiterverarbeitung möglich, anstelle von: for word in txt ?)
Danke,
Marcel
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 09:25
von sparrow
Die Fehlermeldung ist doch recht eindeutig:
Wenn du slicen willst müssen die benutzten Werte Integer oder None sein (oder eine Klasse die eine __index__-Methode hat).
0 ist offensichtlich ein Integer, aber was ist anteil?
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 11:33
von snafu
sparrow hat geschrieben:0 ist offensichtlich ein Integer, aber was ist anteil?
Bzw: Welche Typen kann ``anteil`` abhängig vom gegebenen ``prozent`` wohl annehmen...?
Und wenn wir schon dabei sind: Es ist schon klar, dass `(len(liste) / 100)` potenziell zu einem ungenauen Ergebnis führt (Stichwort: Integer-Division)?
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 17:03
von MarcelF6
Ich bin gerade nicht an meinem Computer, aber meint ihr also, dass es mit int(anteil) in der eckigen Klammer klappen sollte?
Bezüglich Division: Da hab' ich schon dran gedacht, die Division aus __future__ zu importieren; keine Angst

(alternative hätte ich auch ein Punkt oder 'float' setzen können...)
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 17:16
von sparrow
MarcelF6 hat geschrieben:
Bezüglich Division: Da hab' ich schon dran gedacht, die Division aus __future__ zu importieren; keine Angst

Tja, was soll man sagen. Hättest du es nicht gemacht, hätte es funktioniert

Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 17:27
von MarcelF6
Haha Ironie des Schicksals

Aber ist das Ergenis so nicht ungenau? (ok, Kommastellen wären sowieso unbrauchbar...)
Werde es später dann gleich testen

Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 18:53
von Sirius3
der Weg der ganzen Zahlen mit Rundung:
Re: Anteil eines Buches
Verfasst: Freitag 23. November 2012, 22:05
von MarcelF6
Wieso "+50", wenn ich fragen darf?