Dans le livre "Python en concentré - Manuel de reference", ils donnet
certaines explication sur l'usage du module 're'.
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples
ils mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent
r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou
alors comment interpreter la presence/absence de ce 'r' ?
Merci d'avance.
PS: ca se passe page 161 pour ceux qui ont le livre (en Francais).
--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roger That
Le Wed, 08 Dec 2004 19:23:10 +0100, Rakotomandimby (R12y) Mihamina a écrit :
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples ils mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou alors comment interpreter la presence/absence de ce 'r' ?
Absolument pas une erreur. C'est un préfix qui permet d'utiliser une chaîne brute (tentative de traduction de ma part de "raw string"), ce qui fait que le caractère '' (anti-slash) sera lui même et non pas un modificateur comme dans "n".
C'est particulièrement pratique quand tu veux déclarer un nom de fichier sous Windows:
Le Wed, 08 Dec 2004 19:23:10 +0100, Rakotomandimby (R12y) Mihamina a
écrit :
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples ils
mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent
r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou
alors comment interpreter la presence/absence de ce 'r' ?
Absolument pas une erreur. C'est un préfix qui permet d'utiliser une
chaîne brute (tentative de traduction de ma part de "raw string"), ce qui
fait que le caractère '' (anti-slash) sera lui même et non pas un
modificateur comme dans "n".
C'est particulièrement pratique quand tu veux déclarer un nom de fichier
sous Windows:
Le Wed, 08 Dec 2004 19:23:10 +0100, Rakotomandimby (R12y) Mihamina a écrit :
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples ils mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou alors comment interpreter la presence/absence de ce 'r' ?
Absolument pas une erreur. C'est un préfix qui permet d'utiliser une chaîne brute (tentative de traduction de ma part de "raw string"), ce qui fait que le caractère '' (anti-slash) sera lui même et non pas un modificateur comme dans "n".
C'est particulièrement pratique quand tu veux déclarer un nom de fichier sous Windows:
Le Wed, 08 Dec 2004 19:23:10 +0100, Rakotomandimby (R12y) Mihamina a écrit :
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples ils mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou alors comment interpreter la presence/absence de ce 'r' ?
Absolument pas une erreur. C'est un préfix qui permet d'utiliser une chaîne brute (tentative de traduction de ma part de "raw string"), ce qui fait que le caractère '' (anti-slash) sera lui même et non pas un modificateur comme dans "n".
C'est particulièrement pratique quand tu veux déclarer un nom de fichier sous Windows:
Attention aux pièges du modificateur r ! r ne veux pas dire ici raw mais bien regexp si je ne me trompe pas. En particulier, il ne faut pas mettre un nombre impair de avant de fermer la chaine :
r't' = ok r't' = pas ok
La raison pour laquelle r veux plus-tot dire regexp c'est qu'il ne peux pas y avoir d' à la fin d'une regexp il me semble.
Roger That wrote:
Le Wed, 08 Dec 2004 19:23:10 +0100, Rakotomandimby (R12y) Mihamina a
écrit :
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples ils
mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent
r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou
alors comment interpreter la presence/absence de ce 'r' ?
Absolument pas une erreur. C'est un préfix qui permet d'utiliser une
chaîne brute (tentative de traduction de ma part de "raw string"), ce qui
fait que le caractère '' (anti-slash) sera lui même et non pas un
modificateur comme dans "n".
C'est particulièrement pratique quand tu veux déclarer un nom de fichier
sous Windows:
Attention aux pièges du modificateur r ! r ne veux pas dire ici raw mais
bien regexp si je ne me trompe pas. En particulier, il ne faut pas mettre
un nombre impair de avant de fermer la chaine :
r't' = ok
r't' = pas ok
La raison pour laquelle r veux plus-tot dire regexp c'est qu'il ne peux pas
y avoir d' à la fin d'une regexp il me semble.
Le Wed, 08 Dec 2004 19:23:10 +0100, Rakotomandimby (R12y) Mihamina a écrit :
Quand ils donnent des exemples de regexp, sur les 2 premiers exemples ils mettent '<la-regexp>'. A partir du 3-eme exemple ils l'ecrivent r'<la-regexp>' (avec le r avant). Est-ce une erreur typographique? ou alors comment interpreter la presence/absence de ce 'r' ?
Absolument pas une erreur. C'est un préfix qui permet d'utiliser une chaîne brute (tentative de traduction de ma part de "raw string"), ce qui fait que le caractère '' (anti-slash) sera lui même et non pas un modificateur comme dans "n".
C'est particulièrement pratique quand tu veux déclarer un nom de fichier sous Windows:
Attention aux pièges du modificateur r ! r ne veux pas dire ici raw mais bien regexp si je ne me trompe pas. En particulier, il ne faut pas mettre un nombre impair de avant de fermer la chaine :
r't' = ok r't' = pas ok
La raison pour laquelle r veux plus-tot dire regexp c'est qu'il ne peux pas y avoir d' à la fin d'une regexp il me semble.
Eric Brunel
Christophe Cavalaria wrote: [snip]
Attention aux pièges du modificateur r ! r ne veux pas dire ici raw mais bien regexp si je ne me trompe pas.
Tu te trompes: le préfixe r veut bien dire "raw"; lis le passage correspondant dans http://www.python.org/doc/current/ref/strings.html
Il arrive d'ailleurs souvent sur c.l.py que l'on explique longuement aux petits nouveaux que le préfixe r devant les chaines veut bien dire raw, et pas regexp...
En particulier, il ne faut pas mettre un nombre impair de avant de fermer la chaine :
r't' = ok r't' = pas ok
La raison pour laquelle r veux plus-tot dire regexp c'est qu'il ne peux pas y avoir d' à la fin d'une regexp il me semble.
Non; si j'ai bien retenu ce que j'ai lu, c'est un simple problème avec le parser Python qui prend toujours le pour un caractère d'échappement dans " et '. Donc """ est valide (et fait une chaine de deux caractères, et "), mais "" ne l'est pas (ça fait une double-quote, un backslash, une double-quote "échappée", et il manque la double-quote de fin de chaine).
HTH -- - Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> - PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
Christophe Cavalaria wrote:
[snip]
Attention aux pièges du modificateur r ! r ne veux pas dire ici raw mais
bien regexp si je ne me trompe pas.
Tu te trompes: le préfixe r veut bien dire "raw"; lis le passage correspondant
dans http://www.python.org/doc/current/ref/strings.html
Il arrive d'ailleurs souvent sur c.l.py que l'on explique longuement aux petits
nouveaux que le préfixe r devant les chaines veut bien dire raw, et pas regexp...
En particulier, il ne faut pas mettre
un nombre impair de avant de fermer la chaine :
r't' = ok
r't' = pas ok
La raison pour laquelle r veux plus-tot dire regexp c'est qu'il ne peux pas
y avoir d' à la fin d'une regexp il me semble.
Non; si j'ai bien retenu ce que j'ai lu, c'est un simple problème avec le parser
Python qui prend toujours le pour un caractère d'échappement dans " et '.
Donc """ est valide (et fait une chaine de deux caractères, et "), mais ""
ne l'est pas (ça fait une double-quote, un backslash, une double-quote
"échappée", et il manque la double-quote de fin de chaine).
HTH
--
- Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
Attention aux pièges du modificateur r ! r ne veux pas dire ici raw mais bien regexp si je ne me trompe pas.
Tu te trompes: le préfixe r veut bien dire "raw"; lis le passage correspondant dans http://www.python.org/doc/current/ref/strings.html
Il arrive d'ailleurs souvent sur c.l.py que l'on explique longuement aux petits nouveaux que le préfixe r devant les chaines veut bien dire raw, et pas regexp...
En particulier, il ne faut pas mettre un nombre impair de avant de fermer la chaine :
r't' = ok r't' = pas ok
La raison pour laquelle r veux plus-tot dire regexp c'est qu'il ne peux pas y avoir d' à la fin d'une regexp il me semble.
Non; si j'ai bien retenu ce que j'ai lu, c'est un simple problème avec le parser Python qui prend toujours le pour un caractère d'échappement dans " et '. Donc """ est valide (et fait une chaine de deux caractères, et "), mais "" ne l'est pas (ça fait une double-quote, un backslash, une double-quote "échappée", et il manque la double-quote de fin de chaine).
HTH -- - Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> - PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
Tibi
On Fri, 10 Dec 2004 09:49:08 +0100, Eric Brunel wrote:
Non; si j'ai bien retenu ce que j'ai lu, c'est un simple problème avec le parser Python qui prend toujours le pour un caractère d'échappement dans " et '. Donc """ est valide (et fait une chaine de deux caractères, et "), mais "" ne l'est pas (ça fait une double-quote, un
Ce n'est pas un problème, il faut bien qu'il puisse décider comment interpréter par exemple: r'hello' # world' soit la chaîne "hello' # world" comme c'est le cas actuellement, soit "hello" suivit du commentaire "# world'"
On Fri, 10 Dec 2004 09:49:08 +0100, Eric Brunel
<eric_brunel@despammed.com> wrote:
Non; si j'ai bien retenu ce que j'ai lu, c'est un simple problème avec
le parser Python qui prend toujours le pour un caractère d'échappement
dans " et '. Donc """ est valide (et fait une chaine de deux
caractères, et "), mais "" ne l'est pas (ça fait une double-quote, un
Ce n'est pas un problème, il faut bien qu'il puisse décider comment
interpréter par exemple:
r'hello' # world'
soit la chaîne "hello' # world" comme c'est le cas actuellement, soit
"hello" suivit du commentaire "# world'"
On Fri, 10 Dec 2004 09:49:08 +0100, Eric Brunel wrote:
Non; si j'ai bien retenu ce que j'ai lu, c'est un simple problème avec le parser Python qui prend toujours le pour un caractère d'échappement dans " et '. Donc """ est valide (et fait une chaine de deux caractères, et "), mais "" ne l'est pas (ça fait une double-quote, un
Ce n'est pas un problème, il faut bien qu'il puisse décider comment interpréter par exemple: r'hello' # world' soit la chaîne "hello' # world" comme c'est le cas actuellement, soit "hello" suivit du commentaire "# world'"