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.
für einen POST Request würde ich gerne die Daten als String Template verarbeiten. Jedoch bekomme ich das mit format nicht gebacken. Ich bekomme immer einen KeyError (KeyError: '\n "filter"'). Es sieht nach einem dictionary aus ist aber ein String. Überprüft mit type(data). Auch die geschweiten Klammern zu escapen mit einer zusätzlichen Klammer hat nicht geholfen.
Wie löst man sowas?
Ich möchte nur das date (bei on_or_after) durch das heutige Datum ausgetauscht wird.
Man formatiert sich nicht JSON-Daten von Hand zusammen, sondern benutzt ein Wörterbuch.
Beim POST-Request mit requests wird das dann automatisch in JSON umgewandelt,
Da das bei mir mit dem mehrzeiligen String funktioniert hat, wollte ich diesen modifizieren.
Ich meine es ist am Anfang ein String und wenn man es mit type() überprüft, ist es von der Klasse String. Es hat eben das Format von JSON, aber das könnte auch Zufall sein. Weshalb kann man eine String Methode nicht an einem String anwenden, nur weil es wie JSON formatiert ist?
Die Wahrscheinlichkeit, dass es sich nicht um JSON handelt, ist eher gering. Was sagt denn die Dokumentation des Services, den Du da ansprechen willst, dazu?
Wenn Du MEZ willst, warum gibst Du dann UTC an?
Der Services erwartet JSON.
Aber das hat ja nichts mit dem Services zu tun.
Sondern das wenn in Python ein String wie ein JSON formatiert ist, aber dennoch als String klassifiziert wird, die format-Methode nicht funktioniert.
Auf ein dict kann ich keine format Methode aufrufen. Aber auf einen String schon. Und meiner Meinung nach sollte es egal sein wie der String inhaltlich aussieht.
print(datetime.datetime.now()) # MEZ - lokale Zeit
print(datetime.datetime.utcnow()) # UTC - lokale Zeit + 2h
print(datetime.datetime.now(timezone.utc)) # UTC - lokale Zeit + 2h
Dein Problem setzt aber vor dem String an, nämlich, dass Du gar keinen String brauchst, sondern ein Wörterbuch.
Der 24.7.2021 1:30Uhr wandelst Du in 2021-07-24T00:00:00Z um, obwohl es in UTC 23.7.2021 23:30Uhr ist, und damit eigentlich 2021-07-23T00:00:00Z. Du erzeugst also mit Deiner Methode den falschen Tag.
Aber das hat ja nichts mit dem Services zu tun.
Sondern das wenn in Python ein String wie ein JSON formatiert ist, aber dennoch als String klassifiziert wird, die format-Methode nicht funktioniert.
Es hat nichts damit zu tun ob die der String wie ein JSON String aussieht oder nicht. Python hat Probleme mit den geschweiften Klammern, da die eine bestimmte Bedeutung haben.
@werdas34: Wobei Du jetzt auch besser nicht anfängst ”JSON” mit doppelten {{ und }} zu schreiben, denn man macht das auch deswegen nicht, weil man sich verdammt leicht ungültiges JSON mit Zeichenkettenoperationen bastelt.
Wenn man mit strukturierten Daten arbeitet, sollte man die wirklich besser als Datenstruktur erstellen/manipulieren und dann am Ende zu einer Zeichenkette in Beispielsweise dem JSON-Format serialisieren, als zu versuchen strukturierte Daten selbst, in einer ”flachen” Zeichenkette zu basteln, oder noch schlimmer, zu verarbeiten.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman