You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: notebooks/2-3-sequences-str-nb.md
+28-22Lines changed: 28 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -486,42 +486,48 @@ print(s)
486
486
487
487
+++ {"tags": ["gridwidth-1-2"]}
488
488
489
-
voici un problème commun, surtout sous Windows:
490
-
491
-
```{code-cell} ipython3
492
-
:tags: [gridwidth-1-2]
489
+
voici un problème commun, surtout sous Windows:
490
+
on aurait envie d'écrire
493
491
492
+
```python
494
493
s ='C:\Temp\test.txt'
495
-
print(s)
496
494
```
497
495
498
-
+++ {"cell_style": "center"}
499
-
500
-
*`\T` n’existe pas comme échappement; Python interprète correctement `\T`
501
-
* mais `\t` est compris comme une tabulation !!
502
-
503
496
````{admonition} Python-3.12
504
-
:class: note admonition-small
497
+
:class: note admonition-smaller
505
498
506
-
il semble même qu'en 3.12, un `\T` dans une chaine provoque carrément une erreur de syntaxe - ce qui est sans doute mieux au sens où au moins on détecte l'erreur plus tôt...
507
-
````
508
-
509
-
+++
499
+
ceci était déjà faux avec les anciennes versions de Python
500
+
à cause du `\t` qui est compris comme une tabulation
510
501
511
-
pour résoudre ce problème, on peut utiliser des double-backslash `\\`, mais ce n'est vraiment pas élégant
512
-
la bonne solution consiste à utiliser une "raw string", dans laquelle les backslash ne sont *pas interprétés*
502
+
ceci **ne fonctionne plus** avec les versions récentes de Python
503
+
en effet depuis 3.12, un `\T` dans une chaine provoque carrément une erreur de syntaxe - ce qui est sans doute mieux au sens où au moins on détecte l'erreur plus tôt...
504
+
````
513
505
514
506
```{code-cell} ipython3
515
-
# pour créer une raw-string, simplement faire précéder le string d'un 'r'
516
-
517
-
s = r'C:\Temp\test1.bin'
507
+
:tags: [gridwidth-1-2]
508
+
# du coup on est amené à utiliser plutôt une raw-string
518
509
510
+
s = r'C:\Temp\test.txt'
519
511
print(s)
520
512
```
521
513
522
-
````{admonition} préférez le / pour les chemins de fichier
514
+
+++
523
515
524
-
notez que le plus souvent, vous pouvez aussi bien utiliser un `/` au lieu d'un `\` dans les chemins de fichiers sous Windows, ce qui résoud tous les problèmes d'échappement
516
+
en dehors des raw-strings, on utilise fréquemment des backslash pour échapper les caractères spéciaux
517
+
518
+
| séquence | signification |
519
+
|----------:|:---------------|
520
+
|`\n`| nouvelle ligne |
521
+
|`\t`| tabulation |
522
+
|`\r`| retour chariot|
523
+
|`\\`| backslash |
524
+
|`\'`| apostrophe |
525
+
|`\"`| guillemet |
526
+
527
+
```{admonition} noms de fichiers et slash /
528
+
:class: tip
529
+
pour revenir aux noms de fichiers, sachez que vous pouvez **utiliser partout un slash (`/`)** dans les chemins de fichiers **même sous Windows**, Python se débrouillera pour le convertir en backslash (`\`) lorsque nécessaire
530
+
c'est une pratique **courante** et **recommandée**, car ça résoud justement tous les problèmes d'échappement
525
531
526
532
les *raw-strings* restent une feature bien pratique dans d'autres contextes, notamment avec les expressions régulières, que nous n'avons pas pu utiliser comme exemple ici puisqu'on n'en a pas encore parlé..
0 commit comments