Je suis à l'aide de chaînes du modèle pour générer des fichiers et j'aime la concision de la nouvelle f-chaînes à cet effet, pour réduire mon précédent modèle de code à partir de quelque chose comme ceci:
template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
print (template_a.format(**locals()))
Maintenant, je peux le faire directement en remplaçant les variables:
names = ["foo", "bar"]
for name in names:
print (f"The current name is {name}")
Cependant, parfois, il est logique d'avoir le modèle défini ailleurs, plus haut dans le code, ou importées à partir d'un fichier ou quelque chose. Cela signifie que le modèle est une chaîne statique avec les balises de mise en forme en elle. Quelque chose devrait se produire à la chaîne pour dire à l'interprète la chaîne comme un nouveau f-chaîne, mais je ne sais pas si une telle chose existe.
Est-il possible de l'amener dans une chaîne de caractères et l'ont interprété comme un f-chaîne pour éviter à l'aide de l' .format(**locals())
appel?
Idéalement, je veux être capable de code comme celui-ci... (où magic_fstring_function
est là que la partie que je ne comprends pas vient en):
template_a = f"The current name is {name}"
# OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read())
names = ["foo", "bar"]
for name in names:
print (template_a)
...avec cette sortie désirée (sans lire le fichier deux fois):
The current name is foo
The current name is bar
... mais le résultat réel que je reçois est:
The current name is {name}
The current name is {name}