und wieder ich . Wieder Listen diesmal gekoppelt mit Dateien öffnen und beschreiben.
Also angenommen, ich habe eine Textdatei mischmasch.txt. Dadrin sind:
enthalten, der Text ist in utf-8 kodiert.ich habe heute zu lange geschlafen aber das ist nicht sChlimm
Wie es scheint Wird es heute doch nOch regnen aller vorausicht nach
o lolz I wuZ thar heute u no can
So, nun lese ich den Text ein, konvertiere ihn in Unicode um, und splitte ihn in Elemente. Da es sich hier um Linguistik handelt, nenne ich es Token.
So jetzt kommt mein Problem mit der Liste und Position.
Ich soll ein gesuchtes Word eingeben, was ich mit word_seek = raw_input() mache. 5 Elemente vor dem gesuchtem Wort und 5 Elemente nach dem gesuchtem Wort sollen ausgegeben werden, WENN es geht (also wenn vor/hinter dem gesuchten Wort weniger als 5 Elemente sind, sollen die weniger als 5 Elemente trotzdem ausgegeben werden)
Also nehmen wir mal den Text von oben, und das gesuchte Wort ist "heute".
Die Ausgabe soll dann sein:
Meine Idee sieht in dem Fall so aus:ich habe heute zu lange geschlafen aber das
Wie es scheint wird es heute doch noch regnen aller vorausicht
o lolz I wuz thar heute u no can
Code: Alles auswählen
# Anzahl der Token vor und nach dem gesuchtem Wort
n=5
# Datei öffnen
file = open("mischmasch.txt", "rU")
# Das gesuchte Word wird eingegeben
print "Bitte das gesuchte Wort eingeben:"
word_seek = raw_input()
# Jede Zeile im mischmasch.text wird betrachtet
for line in file:
line = unicode(line, "utf-8").lower() # Jede Zeile wird ins Unicode und kleinbuchstaben konvertiert
tokens = line.split() # Text wird in Wort-Token gesplittet
# Falls das eingegebene Wort in der Wort-Tokenliste vorhanden ist
if word_seek in tokens:
for position in range(0,len(tokens)):
position = tokens.index(word_seek) # Position = Stelle des gesuchten Wortes
kollokat = tokens[position - n:position + n] # Postion - 5 bis Position + 5,also 5 Token vor und nach dem gesuchtem Wort
print " ".join(kollokat)
Code: Alles auswählen
wie es scheint wird es heute doch noch regnen aller
o lolz i wuz thar heute u no can