Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
669 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  python, regex, unicode [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

python, regex, unicode [résolu]

n°2155528
suizokukan
Posté le 04-09-2012 à 15:50:21  profilanswer
 

Bonjour à tous,  
j'ai un bout de code en Python 3 qui lit des chaînes du type "(c,c,c)" où c représente un caractère choisi parmi (a,b,ë,ɪ̈ ). Pour parser la chaîne src je pensais à quelque chose comme ça :

Code :
  1. src="(a,b,ɪ̈)"
  2. pattern = "[abëɪ̈]"
  3. for r in re.finditer( '\({0},{0},{0}\)'.format(pattern), src ):
  4.     print( r.group() )


Mais la regex n'aime pas mon "ɪ̈ " que Python décompose en effet en deux charactères (ɪ + diérèse) : (a,b,ɪ̈) n'est pas reconnu par la regex. Je n'ai pas le même problème avec ë que Python décompose en un seul caractère : de fait, (a,b,ë) est correctement reconnu. J'ai essayé de forcer une normalisation à coups de unicodedata.normalize('NFD', ...) appliqués à src et à pattern, sans succès.
 
Comment puis-je contourner ce problème ? Merci d'avance !
 
PS : même problème avec Python 2

Message cité 1 fois
Message édité par suizokukan le 05-09-2012 à 14:41:09

---------------
rule #1 : trust the python
mood
Publicité
Posté le 04-09-2012 à 15:50:21  profilanswer
 

n°2155549
suizokukan
Posté le 04-09-2012 à 18:45:06  profilanswer
 

Problème avec le format du regex : http://stackoverflow.com/questions [...] diacritics .
 
Merci à ceux qui m'ont lu !


---------------
rule #1 : trust the python
n°2155606
masklinn
í dag viðrar vel til loftárása
Posté le 05-09-2012 à 11:27:14  profilanswer
 

suizokukan a écrit :

Mais la regex n'aime pas mon "ɪ̈ " que Python décompose en effet en deux charactères (ɪ + diérèse) : (a,b,ɪ̈) n'est pas reconnu par la regex.[...] J'ai essayé de forcer une normalisation à coups de unicodedata.normalize('NFD', ...) appliqués à src et à pattern, sans succès.


Notes que c'est pas Python hein, il n'y a pas de codepoint pour la combinaison de ɪ et ¨, tu peux bien essayer autant que tu veux ça ne peut être exprimé que par {LATIN LETTER SMALL CAPITAL I} {COMBINING DIAERESIS}.
 
Pour le problème même, tu as rapporté le cas sur le bug tracker? C'est pas indiqué clairement, mais apparemment re n'a pas de support pour http://unicode.org/reports/tr18/ et fait donc tout son matching sur codepoints, pas sur grapheme clusters. Faudrait au moins que ce soit noté, truc du style


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2155684
suizokukan
Posté le 05-09-2012 à 14:25:10  profilanswer
 

Merci Masklinn d'avoir lu mon message. Incriminer Python n'était pas précis de ma part et relevait en effet d'un abus de langage. Je vais suivre ton conseil et alerter le bug tracker de Python. Merci pour les termes techniques (codepoint, grapheme clusters) que je ne connaissais pas.


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  python, regex, unicode [résolu]

 

Sujets relatifs
Python numpy ecriture résultat avec itérationTableau python vers array php ?
Regex Tag <img />[RegEx] Supprimer les espaces avant et après comme un trim
bonjour, problème synthax python sous idleprobleme regex java
[python] : trier une liste sur deux criètes (histoire de ".")Regex en LUA ???
[resolu] Nettoyer du code html pour enlever certaines balise inutilesTraitement de fichier avec python !
Plus de sujets relatifs à : python, regex, unicode [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR