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?
4 Réponses :
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])
Merci, je ne savais pas que je pouvais utiliser la méthode de groupe avec findall.
@ user84296 Eh bien ... vous ne pouvez pas . C'est un peu le but de ma réponse: /
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)
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).