J'ai une chaîne dans laquelle je voudrais des accolades, mais je profite également de la fonction des chaînes f. Y a-t-il une syntaxe qui fonctionne pour cela?
Voici deux façons dont cela ne fonctionne pas. Je voudrais inclure le texte littéral "{bar}
"dans le cadre de la chaîne.
foo = "test"
fstring = f"{foo} {bar}"
NameError: le nom 'bar' n'est pas défini
fstring = f"{foo} \{bar\}"
SyntaxError: la partie d'expression de chaîne f ne peut pas inclure de barre oblique inverse
Résultat désiré:
'test {bar}'
Edit: On dirait que cette question a la même réponse que Comment puis-je imprimer des caractères littéraux entre accolades en python et utiliser également .format dessus? , mais vous ne peut savoir que si vous savez que la fonction de formatage utilise les mêmes règles que la chaîne F. Donc, espérons que cette question a de la valeur pour lier les chercheurs de chaîne f à cette réponse.
Bien qu'il y ait une erreur de syntaxe personnalisée de l'analyseur, le même astuce fonctionne comme pour les chaînes régulières.
Utilisez des doubles curlies:
>>> foo = 'test'
>>> f'{foo} {{bar}}'
'test {bar}'
Il est mentionné dans les spécifications ici et les documents ici .