Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
import codecs
examples_file = codecs.open('Python/ExListBuild/esutf8.txt', encoding = 'utf-8', mode = 'r')
for i in range(0, 4):
print "iteration", i
for line_es in examples_file.readlines():
print "hallo"
Dies liefert eine Ausgabe von
iteration 0
hallo
hallo
iteration 1
iteration 2
iteration 3
Wie kann ich das line_es Element wieder zurücksetzen, so daß
@bjoernh: Sind denn nun Zeilenende-Zeichen an den einzelnen Zeilen noch dran oder nicht? Ich bin ja immer noch der Meinung hier dürfte kein Treffer gefunden werden solange die Vokabel nicht am Ende eines Beispielsatzes steht.
BlackJack hat geschrieben:@bjoernh: Sind denn nun Zeilenende-Zeichen an den einzelnen Zeilen noch dran oder nicht? Ich bin ja immer noch der Meinung hier dürfte kein Treffer gefunden werden solange die Vokabel nicht am Ende eines Beispielsatzes steht.
Nein sind sie nicht. Jetzt findet er auch gar nichts mehr. Kann man dies schnell korrigieren?
for line_nv in newvocab_file.readlines():
line_nv = line_nv.strip()
print "-"
print "next vocab item being checked"
print "-"
for line_es in examplesentences_file.readlines():
print repr(line_es)
index = line_es.find(line_nv)
if index==-1:
print "nope"
else:
print "yes"
create_examples_file_out.write(line_es)
examplesentences_file.seek(0)
newvocab_file.close()
aber das ganze konstrukt ist nicht wirklich elegant.
Lies doch alle keywords (Wörter die du lernen möchtest) in eine Liste. Dann öffnest du die Datei mit den Beispielsätzen und schaust ob irgend ein keyword in der Zeile vorkommt und speicherst diese Zeile in deiner Ausgabedatei. In etwa so würde ich es machen. Wahrscheinlich gibt es noch bessere Ideen.
Rein von den zu erwartenden Datenmengen ist es wahrscheinlich auch ungünstig die Beispielsätze immer wieder neu einzulesen. Ich gehe mal davon aus, dass die Menge der neuen Vokabeln kleiner sein wird. Und ausserdem in den Speicher passt. Dann braucht man keine Datei immer wieder und wieder lesen, sondern kann sich die Vokabeln *einmal* am Anfang in eine Liste einlesen. Ungetestet:
def main():
with codecs.open('neue_vokabeln.txt', 'r', 'utf-8') as lines:
new_words = [s.strip() for s in lines]
with codecs.open('ausgabe.txt', 'w', 'utf-8', 'w') as out_file:
with codecs.open('beispiele.txt', 'r', 'utf-8') as example_sentences:
for example_sentence in example_sentences:
for new_word in new_words:
if new_word in example_sentence:
print 'yes'
out_file.write(example_sentence)
break
else:
print 'nope'
Danke für den input. Ich hab inzwischen eine funktionierende Version. Geplant ist eine große Menge von Beispielsätzen zu verwenden, daher werde ich versuchen, den Kram aber noch günstiger zu machen. Insbesondere die
with ... as Konstruktion sieht interessant aus.
Anfängerfrage: Was macht .strip(), also ohne Argument?
Zuletzt geändert von bjoernh am Samstag 29. Mai 2010, 17:53, insgesamt 1-mal geändert.