[Python] [Regexp] mettre en minuscule

mettre en minuscule [Python] [Regexp] - Python - Programmation

Marsh Posté le 21-04-2005 à 10:20:16    

Bonjour,
J'ai une chaine de caractere sur laquelle je veux mettre en minuscule l'intérieur d'une balise (qui s'appelle PC, mais c'est pas grave)
 
J'essaye ça :
libelle = re.sub('<PC>(?P<pc>.*?)</PC>','<PC>'+'\g<pc>'.lower()+'</PC>',libelle)
 
et ça marche pas (mais je sais qu'il me trouve bien l'intérieur de ma chaine, mais il la laisse en majuscule)
 
J'ai aussi essayé ça :
libelle = re.sub('<PC>(.*?)</PC>','<PC>'+'\1'.lower()+'</PC>',libelle)
 
Et là, il me met un caractere bizarre qui n'a rien à voir avec ce qu'il y a entre les balises (un seul caractere apparement...)
 
J'ai pas forcement besoin d'avoir plusieurs solutions qui marche (une seule me suffit), mais j'aimerais comprendre pour ma culture perso pourquoi \1 ne renvoit pas la chaine trouvé alors que quand je fais un groupe nommé ça fonctionne.
 
Et si y'a une autre solution, je suis preneur aussi :-)
 
Merci,
 
Axel


Message édité par axel584 le 21-04-2005 à 14:28:23
Reply

Marsh Posté le 21-04-2005 à 10:20:16   

Reply

Marsh Posté le 23-04-2005 à 17:42:11    

axel584 a écrit :


libelle = re.sub('<PC>(.*?)</PC>','<PC>'+'\1'.lower()+'</PC>',libelle)


 
tu peux essayer avec une fonction :

Code :
  1. def sublower(matchobj):
  2. return "<PC>"+matchobj.group(1).lower()+"</PC>"
  3. test = re.compile('<PC>(.*?)</PC>')
  4. libelle = "<PC>TEST</PC>EN MAJUSCULE<PC>TOTO</PC>"
  5. test.sub(sublower, libelle)
  6. '<PC>test</PC>EN MAJUSCULE<PC>toto</PC>'


 
le_GLu


---------------
Python facile : http://pythonfacile.free.fr/ Les ressources (liens) en français sur Python.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed