2017-05-02 32 views
2

Ich versuche, Python format Methode zu verwenden, um meine Platzhalter in einer Zeichenfolge formatieren.Überschreiben {} Platzhalter in Python-String-Format-Methode

Das Problem ist die Zeichenfolge enthält {} intern und die String-Methode ist nicht in der Lage, es zu lösen.

my_value='v' 
'{"k":"{value}"}'.format(value=my_value) # This results in error due to outside {} 
# Desired Output '{"k":"v"}' 

Wie würde ich das lösen?

  • Ich kann dies zu json konvertieren und dann ersetzen, aber ich es vorziehen, wenn die Zeichenfolge format tun kann

Antwort

5

Sie brauchen nicht etwas zu überschreiben, können Sie einfach die geschweiften Klammern entkommen, indem sie ihnen eine Verdoppelung wie in the documentation für die Format-String-Syntax angegeben: {{ und }}:

Wenn Sie eine geschweifte Klammer im wörtlichen Text enthalten müssen, können sie durch eine Verdoppelung entwertet werden.

>>> '{{"k":"{value}"}}'.format(value=my_value) 
'{"k":"v"}' 

Dies gilt gleichermaßen für formatierte Stringliterale wenn Sie sich mit ihnen zu einem bestimmten Zeitpunkt zu planen:

>>> f'{{"k": "{my_value}"}}' 
'{"k": "v"}'