2017-03-01 2 views
4

Ich habe eine Zeichenfolge, in der ich geschweifte Klammern möchte, aber auch die f-Strings-Funktion nutzen. Gibt es eine Syntax, die dafür funktioniert?Wie f-Strings in Python 3.6 zu entkommen?

Hier sind zwei Möglichkeiten, wie es nicht funktioniert. Ich möchte den Literaltext "{bar}" als Teil der Zeichenfolge einschließen.

foo = "test" 
fstring = f"{foo} {bar}" 

Nameerror: name 'bar' ist nicht definiert

fstring = f"{foo} \{bar\}" 

Syntax: f-String-Ausdruck Teil keinen Backslash

Gewünschtes Ergebnis können sein:

'test {bar}' 

Edit: Sieht so aus, als ob diese Frage die gleiche Antwort wie How can I print literal curly-brace characters in python string and also use .format on it? hat, aber Sie können das nur wissen, wenn Sie weiß, dass die format-Funktion die gleichen Regeln wie die f-string verwendet. Also hoffentlich hat diese Frage einen Wert darin, F-Stringsucher an diese Antwort zu binden.

Antwort

9

Obwohl es einen benutzerdefinierten Syntaxfehler vom Parser gibt, funktioniert same trick wie für normale Zeichenfolgen.

Verwenden Doppel curlies:

>>> foo = 'test' 
>>> f'{foo} {{bar}}' 
'test {bar}' 

Es ist in der Spezifikation erwähnt here und die Dokumentation here.