I have a string in which I would like curly-brackets, but also take advantage of the f-strings feature. Is there some syntax that works for this?
Here are two ways it does not work. I would like to include the literal text {bar} as part of the string.
foo = "test"
fstring = f"{foo} {bar}"
NameError: name 'bar' is not defined
fstring = f"{foo} {bar}"
SyntaxError: f-string expression part cannot include a backslash
Desired result:
'test {bar}'
Edit: Looks like this question has the same answer as How can I print literal curly-brace characters in a string and also use .format on it?, but you can only know that if you know that str.format uses the same rules as the f-string. So hopefully this question has value in tying f-string searchers to this answer.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Although there is a custom syntax error from the parser, the same trick works as for calling .format on regular strings.
Use double curlies:
>>> foo = 'test'
>>> f'{foo} {{bar}}'
'test {bar}'
It’s mentioned in the spec here and the docs here.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0