3
votes

Python Findall ne trouve rien

J'apprends à regex et je suis coincé avec ce code:

import re

resume = '''
    (738) 383-5729
    (373) 577-0492
    (403) 443-2759
    (375) 880-8576
    (641) 576-2342
    (951) 268-8744
    '''

phoneRegex = re.compile(r'\d')

mo = phoneRegex.findall(resume)

print(mo.group())

Lorsque j'essaye avec search au lieu de findall , cela travaux. Mais il ne trouve aucune correspondance avec findall.

Qu'est-ce que je fais mal?


0 commentaires

4 Réponses :


-2
votes

Le module

Re.findall () est utilisé lorsque vous voulez parcourir les lignes par ligne, il retournera une liste de toutes les correspondances non groupées.

Donc dans votre cas, il retourne comme liste

print(mo[0])


0 commentaires


1
votes

Il semble que vous essayez de faire correspondre les numéros de téléphone dans CV , pour cela vous pouvez utiliser:

(738) 383-5729
(373) 577-0492
(403) 443-2759
(375) 880-8576
(641) 576-2342
(951) 268-8744

Résultat:

resume = '''
    (738) 383-5729
    (373) 577-0492
    (403) 443-2759
    (375) 880-8576
    (641) 576-2342
    (951) 268-8744
    '''

mo = re.findall(r'\(\d{3}\) \d{3}-\d{4}', resume)

for x in mo:
    print(x)

  1. Démo Python

  2. Démo et explication Regex


0 commentaires

1
votes

Puisque (on dirait) que vous êtes juste dehors pour les nombres, vous pouvez faire quelque chose comme

>>> [''.join(c for c in l if c in '0123456789')  for l in resume.strip().splitlines()]
['7383835729', '3735770492', '4034432759', '3758808576', '6415762342', '9512688744']

Cela pourrait vous éviter des problèmes avec les nombres formés au niveau international (comme + 46- (0) 7-08 / 123 456 et autres).


0 commentaires