End of line while scanning string literal

Résolu/Fermé
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - Modifié le 3 oct. 2022 à 16:05
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 4 oct. 2022 à 17:43

Bonjour,

Ce message apparait avec la ligne suivante malgré le r de raw_string placé devant la chaine

(évidemment à cause du \)

s = r'toto\'

Jamais vu ça depuis que je pratique Python

Que peux-t-on faire de plus, à part doubler le \ mais pas normal avec le r devant...

Merci d'avance pour vos réponses
Windows / Edge 105.0.1343.53

5 réponses

yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
3 oct. 2022 à 16:46

bonjour,

Ce comportement est documenté: "une chaîne de caractères brute ne peut pas se terminer par un nombre impair de barres obliques inversées".

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
3 oct. 2022 à 17:09

Ah ok,

Bon, malgré le r qui sert justement à ignorer les escapes..

On va faire avec, merci

0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
4 oct. 2022 à 15:02

Bonjour,

La manière la plus naturelle serait à mon avis d'écrire :

s = "toto'"

Bonne chance

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 4 oct. 2022 à 16:50

Bonjour,

Non, non

Le dernier caractère est bel et bien un backslash ..

s = r'toto\'

seule solution : s = r'toto\\'

0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
4 oct. 2022 à 17:05

Ah ok. Dans ce cas, il faut effectivement échapper le \. Mais le r devant la chaîne n'est pas utile, tu peux écrire directement:

s = "toto\\"
s = 'toto\\'

Bonne chance

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
4 oct. 2022 à 17:43

ben oui maintenant qu'on a vu que le r ne servait à rien dans ce cas

en fait, je n'ai pas tout dit :-):

s = r'tagada\pouete\pouete\\'

le r sert au moins pour les 2 premiers ...

0