f-string expression part cannot include a backslash
Python
Erreur courante
Explication
L'erreur `SyntaxError: f-string expression part cannot include a backslash` survient, **avant Python 3.12**, quand vous mettez un **antislash** (`\n`, `\t`...) à l'intérieur de la partie expression `{ }` d'une f-string. Depuis Python 3.12, c'est autorisé.
```python
lignes = ["a", "b"]
print(f"{'\n'.join(lignes)}") # antislash dans l'expression (Python < 3.12)
# SyntaxError: f-string expression part cannot include a backslash
```
Causes courantes
- **Antislash dans `{ }`** d'une f-string sous Python 3.6–3.11. - **Caractères d'échappement** (`\n`, `\t`, `\\`) placés dans l'expression plutôt qu'en dehors.
1. Sortez l'antislash dans une variable
saut = "\n"
print(f"{saut.join(lignes)}") # ✅ plus d'antislash dans l'accolade
2. Utilisez chr() pour le caractère
print(f"{chr(10).join(lignes)}") # chr(10) = saut de ligne
3. Préparez la valeur avant la f-string
texte = "\n".join(lignes)
print(f"{texte}")
4. Passez à Python 3.12+
Depuis la version 3.12, les antislashes sont autorisés dans les f-strings : le code d'origine fonctionne tel quel.
Comment prevenir cette erreur
- **Extrayez les séquences d'échappement** (`\n`, `\t`) dans des variables hors de la f-string si vous ciblez Python < 3.12.
- Vérifiez votre version : `python --version`.
- Référence : [docs.python.org — f-strings](https://docs.python.org/fr/3/reference/lexical_analysis.html#f-strings).
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
Pourquoi cette limite existait-elle ?
L'analyseur des f-strings (avant 3.12) ne savait pas traiter les antislashes dans la partie expression. La PEP 701 (Python 3.12) a réécrit cet analyseur et levé la restriction.
Comment insérer un saut de ligne entre éléments dans une f-string ?
Définissez `nl = "\n"` puis `f"{nl.join(elements)}"`, ou passez à Python 3.12 où `f"{'\n'.join(elements)}"` est accepté directement.