Заменить подстроку из массива строк - Python - PullRequest
1 голос
/ 07 июля 2019

Как удалить подстроку из следующей строки 'AA.01.001 Hello' с регулярным выражением, используя Python.

Я пробовал следующее, но не сработало.

array= ['AB.01.001 Hello','BA.10.004','CD.10.015 Good bye']
 regex = re.compile(r'[A-Z]{2,3}\\.[0-9]{2}\\.[0-9]{3}')
filtered = filter(lambda i: not regex.search(i), array)

Edit:

Exprected output : [`Hello`,'Good bye']

1 Ответ

1 голос
/ 07 июля 2019

Вы можете использовать re.sub:

import re
array= ['AB.01.001 Hello','BA.10.004','CD.10.015 Good bye']
regex = re.compile(r'[A-Z]{2,3}\.[0-9]{2}\.[0-9]{3}\s*')
filtered = filter(None, map(lambda i: regex.sub('', i), array))
print(list(filtered))
# => ['Hello', 'Good bye']

См. Демонстрационную версию Python .

Примечание. Я использовал только одну \ для выхода из буквальных точек (поскольку вы используете необработанный строковый литерал для определения регулярного выражения) и добавили \s*, чтобы также удалить любые 0 или более пробелов после вашего шаблона.

Подробности

  • map(lambda i: regex.sub('', i), array) - перебирает элементы array и удаляет совпадения с помощью re.sub
  • filter(None, ...) удаляет пустые элементы, полученные в результате подстановки, когда шаблон соответствует всей строке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...