regex : pattern pour détecter les lettres et leur accent [résolu]

regex : pattern pour détecter les lettres et leur accent [résolu] - Python - Programmation

Marsh Posté le 15-03-2013 à 16:54:04    

Bonjour,
je veux récupérer avec Python3 tantôt "a" tantôt "á", tantôt "e" tantôt "é", en distinguant la lettre avec ou sans accent pour récupérer par la suite cette information. J'écris donc (l'accent aigu a pour valeur unicode 0x0301) :

Code :
  1. pattern = "(a|e)(\{0})?".format(chr(0x0301))
  2. import re
  3. src = "aáZeé"
  4. for res in re.finditer(pattern, src):
  5.     print( src[res.start():res.end()] )


Je m'attendais à récupérer "a", "á", "e" et "é" mais le programme ne me retourne que "a", puis "e".
 
Voyez-vous pourquoi "á" et "é" ne correspondent pas au pattern ? Merci de m'aider !


Message édité par suizokukan le 15-03-2013 à 17:10:49

---------------
rule #1 : trust the python
Reply

Marsh Posté le 15-03-2013 à 16:54:04   

Reply

Marsh Posté le 15-03-2013 à 17:10:32    

Trouvé, j'avais oublié l'habituelle décomposition :
 

Code :
  1. p = "((a|b|e)(\{0})?)".format(chr(0x0301))
  2. import re, unicodedata
  3. src = "abádcéa"
  4. src = unicodedata.normalize('NFD', src)
  5. for res in re.finditer(p, src):
  6.     print( src[res.start():res.end()] )


 
Merci à ceux qui m'ont lu !


---------------
rule #1 : trust the python
Reply

Sujets relatifs:

Leave a Replay

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