Transform string to f-string Transform string to f-string python python

Transform string to f-string


An f-string is syntax, not an object type. You can't convert an arbitrary string to that syntax, the syntax creates a string object, not the other way around.

I'm assuming you want to use user_input as a template, so just use the str.format() method on the user_input object:

variable = 42user_input = "The answer is {variable}"formatted = user_input.format(variable=variable)

If you wanted to provide a configurable templating service, create a namespace dictionary with all fields that can be interpolated, and use str.format() with the **kwargs call syntax to apply the namespace:

namespace = {'foo': 42, 'bar': 'spam, spam, spam, ham and eggs'}formatted = user_input.format(**namespace)

The user can then use any of the keys in the namespace in {...} fields (or none, unused fields are ignored).


The real answer is probably: don't do this. By treating user input as an f-string, you are treating it like code which creates a security risk. You have to be really certain you can trust the source of the input.

If you are in situation where you know the user input can be trusted, you can do this with eval():

variable = 42user_input="The answer is {variable}"eval("f'{}'".format(user_input))'The answer is 42'

Edited to add: @wjandrea pointed out another answer which expands on this.


variable = 42user_input = "The answer is {variable}"# in order to get The answer is 42, we can follow this methodprint (user_input.format(variable=variable))

(or)

user_input_formatted = user_input.format(variable=variable)print (user_input_formatted)

Good link https://cito.github.io/blog/f-strings/