Python: Wieso sind die beiden Strings nicht gleich?
Ich habe einen Webserver mit Python und Flask erstellt.
Der Chat funktioniert super, aber wenn ich versuche zu schauen, ob ein bestimmter Nutzer eine bestimmte Nachricht geschrieben hat, geht das nicht.
Hier ein Screenshot:
Wie ihr hier sehen könnt, sind die beiden Strings identisch. Es wird jedoch gesagt, dass sie es nicht sind.
Kann mir jemand sagen, was falsch ist?
3 Antworten
Es wäre besser, nicht alle Daten miteinander zu vergleichen, sondern nur die Daten, die du tatsächlich miteinander vergleichen möchtest. Angenommen, du würdest die Nachrichten einmal erweitern (z.B. um einem Zeitstempel).
{ username: "...", message: "...", datetime: .... }
Dann müsstest auch daran denken, solche Codestellen wie die obige wieder anzupassen.
Doch schau zuerst nach, welchen Typ der Parameter (den ich eher in data umbenennen würde) tatsächlich hat:
print(type(data))
und passe erst im Anschluss deine if-Anweisung an. Wenn man einmal davon ausgeht, dass data ein Objekt ist, könnte sie so aussehen:
if data.username == "admin" and data.message == "hallo":
Also Python ist nicht meine Baustelle aber message wird wohl kein String sondern ein Objekt oder etwas in der Art sein. Bei deinem Beispiel sollte es so funktionieren:
if f"{message}" == command:
Offenbar ist message ein dict? und das andere ein String. Wenn Du die Stringrepresentation des dicts mit Deinem String vergleichen willst, dann solltest Du auch das tun:
if f"{messsage}" == command:
if message.__str__() == command:
if str(message) == command:
Wirklich sinnvoll ist eine solche Art des Vergleichens allerdings nicht.