Domanda

Ho una stringa da cui voglio estrarre 3 gruppi:

'19 janvier 2012' -> '19', 'janvier', '2012'

Il nome del mese potrebbe contenere caratteri non ASCII, quindi [A-Za-z] Non funziona per me:

>>> 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'
>>> 

Potrei usare \w Ma corrisponde a cifre e sottolineate:

>>> 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',)
>>> 

Ho provato a usare :alfa:, ma non funziona:

>>> 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'
>>> 

Se potessi in qualche modo abbinare \w senza [_0-9], ma non so come. E anche se scopro come farlo, c'è un collegamento pronto come [:alpha:] Quale funziona in Python?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top