Bonjour à vous,
Je cherche effectivement à découper une chaîne en Python sur les espaces (comme la méthode split), mais aussi sur la ponctuation. Malheureusement, ce n'est pas aussi facile, en particulier quand les caractères accentués entrent aussi dans la partie !
Par exemple, voici ce que je recherche à faire :
Voici les essais que j'ai déjà fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>>> chaine = "Ma chaîne, très simple!!" >>>> regex = re.compile("...") >>>> mots = [mot for mot in re.split(regex, chaine) if mot.strip()] >>>> print mots ['Ma', 'chaîne', ',', 'très', 'simple', '!!']
Regex --> liste de retour
"\W" --> ['Ma', 'cha', 'ne', 'tr', 's', 'simple'] : ni ponctuation, ni accent
"(\W+)" --> ['Ma', 'cha', 'î', 'ne', ',', 'tr', 'è', 's', 'simple', '!!'] : ponctuation OK, mais les accents sont pris pour des délimiteurs
(J'ai volontairement remplacé les chaînes \xxx par les accents)
"\s" --> ['Ma', 'chaîne,', 'très', 'simple!!'] : accents OK, mais plus la ponctuation...
J'ai aussi essayé d'ajouter des "flags" à la compilation de la Regex comme re.LOCALE ou re.UNICODE, mais en apparence rien ne change grandement.
Après avoir passé la soirée à chercher, je viens demander votre soutien. Si quelqu'un a déjà été confronté au problème, ou possède une éventuelle réponse, je suis ouvert à toute proposition.
En vous remerciant d'avoir pris le temps de me lire, et peut-être de m'aider, je vous souhaite une bonne journée.
Cordialement.
Ps : J'utilise Python 2.6 sur un GNU/Debian (cela est-il important ? On ne sait jamais !)
Partager