Übereinstimmung von text und zwei Dictionarys prüfen

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.
Antworten
Noranora
User
Beiträge: 62
Registriert: Donnerstag 21. Januar 2016, 12:51

Hallo!
Ich möchte gerne, dass ein Text gelesen wird und geprüft wird, ob die worte in dem Text in dem Dictionary "nettigkeiten" sind.
Wenn ja, dann soll geprüft werden, ob das wort in einem weiteren Dictionary ist hier "tdict1". Wenn das der Fall ist, ist das wort auch in dem Dictionary"tdict2" !
Ich möchte dass mir dann das Wort (also element) mit den jeweiligen Values aus tdict1 und tdict2 ausgegeben wird. Und dass soll dann von allen Vorkommenden übereinstimmungen von Text, nettigkeiten und tdict1 passieren. So wie es jetzt aussieht, macht er das aber nur ein einziges Mal.
Also suche ich schon nach einem Feehler in der Schleife...finde ihn aber nicht wirklich :/.


[Codebox=python file=Unbenannt.py]
import urllib
import re
datei=open("filename.txt")
t=datei.read()

nettigkeit={"Hallo":("Hi", "Guten Tag", "Hey","Huhu"),
"Bye":("Tschüss", "Bye Bye", "Auf Wiedersehen"),}

einzelne_Worte=re.findall(r'(\w+)',str(t))


for element in nettigkeit.keys(): #
if element in einzelne_Worte and element in tdict1:

print(element,tdict1[element], tdict2[element])
else:
print (element)


for part in nettigkeit.values():

for e in part:
if e in einzelne_worte and e in tdict1:
print(e,tdict1[e], tdict2[e])
[/Codebox]


Würde mich freuen, wenn jemand weiter weiß! LG
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Noranora: tdict1 und tdict2 sind schlechte Namen. Was sollen die denn bedeuten? Die Datei datei wird nicht wieder geschlossen und str auf einen String t (wieder ein schlechter Name) anzuwenden, ist ziemlich wirklungslos. Warum ist nettigkeit ein Wörterbuch wenn Du es nur als Liste von zusammengehörigen Wörtern benutzt? Wenn ich es richtig verstehe, was Du willst, willst Du eigentlich alles umdrehen. nettigkeit soll verschiedene Begrüßungen auf Hallo mappen und Du willst alle einzelne_Worte durchgehen. Dabei ist aber das Problem, das "Auf Wiedersehen" aus zwei Wörtern besteht und Deine Liste nur Einzelwörter enthält und Bye sowohl in "Bye" als auch in "Bye Bye" vorkommt. Wie willst Du damit umgehen?
Noranora
User
Beiträge: 62
Registriert: Donnerstag 21. Januar 2016, 12:51

Hallo!
Okay, in dem Fall würde ich erstmal "Bye Bye" und "Auf wiedersehen" löschen. mir geht es erstmal um den Vorgang an sich.
Ich möchte für jedes Wort in t ( die Worte werden durch den regExp gefunden) prüfen, ob das Wort auch in einem Key oder in einem Value von tdict1 ist. Falls ja, soll mir für jedes enthaltene Wort der Wert des Wortes aus dem tdict1 und der Wert des Wortes aus dem tdict2 ausgegeben werden.
Noranora
User
Beiträge: 62
Registriert: Donnerstag 21. Januar 2016, 12:51

Stimmt, nettigkeit könnte auch als Liste von Listen dargestellt werden. Aber macht es das einfacher?
Antworten