Python Findall ничего не нашел - PullRequest
       0

Python Findall ничего не нашел

0 голосов
/ 06 февраля 2019

Я изучаю Regex и застрял с этим кодом:

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())

Когда я пытаюсь использовать search вместо findall, это работает.Но он не может найти совпадения с findall.

Что я делаю не так?

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Поскольку (похоже, что вы просто хотите узнать цифры), вы можете сделать что-то вроде

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

Это может избавить вас от проблем с числами, сформированными на международном уровне (например, +46-(0)7-08/123 456 иподобное).

0 голосов
/ 06 февраля 2019

findall() возвращает простой список строк, соответствующих шаблону.

У него нет метода group(), просто пропустите:

>>> print(mo)
['7', '3', '8', '3', '8', '3', '5', '7', '2', '9', '3', '7', '3', '5', '7',
 '7', '0', '4', '9', '2', '4', '0', '3', '4', '4', '3', '2', '7', '5', '9',
 '3', '7', '5', '8', '8', '0', '8', '5', '7', '6', '6', '4', '1', '5', '7', 
 '6', '2', '3', '4', '2', '9', '5', '1', '2', '6', '8', '8', '7', '4', '4']
0 голосов
/ 06 февраля 2019

Похоже, вы пытаетесь сопоставить номера телефонов в resume, для этого вы можете использовать:

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)

Выход:

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

  1. Демонстрация Python

  2. Демонстрация и объяснение регулярных выражений

0 голосов
/ 06 февраля 2019

Re.findall() модуль используется, когда вы хотите перебирать строки за строкой, он возвращает список всех совпадений, а не групп.

Так что в вашем случае он возвращается как список

print(mo[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...