Ho uno stringa da cui voglio estrarre 3 gruppi:corrispondenza solo una lettera unicode in Python ri
'19 janvier 2012' -> '19', 'janvier', '2012'
nome mese potrebbe contenere caratteri non ASCII, in modo da [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'
>>>
potevo usare \w
ma partite cifre e underscore:
>>> 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 cercato di usare [:alpha:], 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 corrispondere \w
senza [_0-9]
, ma non so come. E anche se scopro come farlo, c'è una scorciatoia pronta come [:alpha:]
che funziona in Python?
Per quanto riguarda '[: alpha:]', funziona solo all'interno di una classe di caratteri, quindi la regex corretta sarebbe '[[: alpha:]] +', ma Python non li supporta comunque. –
Perché non chiamare semplicemente .split() sulla stringa? – yak