Correspondant uniquement à une lettre Unicode dans Python re
-
30-10-2019 - |
Question
J'ai une chaîne à partir de laquelle je veux extraire 3 groupes:
'19 janvier 2012' -> '19', 'janvier', '2012'
Le nom du mois peut contenir des caractères non ASCII, donc [A-Za-z]
ne fonctionne pas pour moi:
>>> import re
>>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 janvier 2012', re.UNICODE).groups()
(u'20', u'janvier', u'2012')
>>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 février 2012', re.UNICODE).groups()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'
>>>
je pourrais utiliser \w
Mais il correspond à des chiffres et à souligner:
>>> re.search(ur'(\w+)', u'février', re.UNICODE).groups()
(u'f\xe9vrier',)
>>> re.search(ur'(\w+)', u'fé_q23vrier', re.UNICODE).groups()
(u'f\xe9_q23vrier',)
>>>
J'ai essayé d'utiliser :alpha:, mais ça ne marche pas:
>>> re.search(ur'[:alpha:]+', u'février', re.UNICODE).groups()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'
>>>
Si je pouvais correspondre en quelque sorte \w
sans pour autant [_0-9]
, mais je ne sais pas comment. Et même si je découvre comment faire cela, y a-t-il un raccourci prêt comme [:alpha:]
Ce qui fonctionne dans Python?
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow