Formatowanie stringów w pythonie przy użyciu metody format i wyświetlanie nawiasów klamrowych

Data publikacji: 2017-07-03 | Tagi:

Ostatnio pojawiła się potrzeba wygenerowania z ręki małego jsona ze sparametryzowaną treścią. Chcąc użyć w pełni pythona3 postanowiłem zastosować metodę .format. Niestety nie było łatwo...

W uproszczeniu przyjmijmy, że nasz kod generujący json powinien wyglądać tak:

    json = "[{'param': {param}}]".format(param=1)

W efekcie oczywiście chciałbym mieć jsona w takiej formie:

In [6]: print(json)
[{'parameter': 1}]

Ale nie ma tak łatwo ;). Wykonanie .format w postaci jak wyżej powoduje jedynie wyświetlenie komunikatu błędu:

----> 1 json = "[{'parameter': {param}}]".format(param=1)

KeyError: "'parameter'"

Rozwiązaniem jest wyescapowanie nawiasów klamrowych (curly braces), które mają się pojawić w docelowym stringu. Robimy to poprzez napisanie ich podwójnie. Nasz kod powinien zatem wyglądać tak:

    json = "[{{'param': {param}}}]".format(param=1)

Po takich zabiegach json (lub jakikolwiek inny string z nawiasami klamrowymi w treści) wygeneruje się poprawnie.


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: