Python findall: полезный метод для поиска и извлечения данных
Метод findall() в языке программирования Python представляет собой функцию, которая позволяет выполнить поиск всех вхождений регулярного выражения в заданной строке и вернуть все найденные совпадения в виде списка.
Для использования метода findall() сначала необходимо импортировать модуль re, который предоставляет функционал для работы с регулярными выражениями. Пример использования findall() следующий:
import re
pattern = r'\d+' # Регулярное выражение для поиска чисел
string = 'abc12def34ghi56jkl'
result = re.findall(pattern, string)
print(result) # Выведет: ['12', '34', '56']
В данном примере мы задаем регулярное выражение '\d+', которое ищет все последовательности цифр в строке. Затем мы вызываем функцию findall() из модуля re, передавая в нее регулярное выражение pattern и исходную строку string. Результатом выполнения функции будет список, содержащий все найденные совпадения.
В дополнение к простому примеру, давайте рассмотрим более сложные сценарии использования findall() с примерами кода.
Пример 1: Поиск электронных адресов в тексте
import re
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
text = 'Мой адрес электронной почты: example@example.com, а также еще несколько адресов: test@test.com, another@example.org'
result = re.findall(pattern, text)
print(result) # Выведет: ['example@example.com', 'test@test.com', 'another@example.org']
В данном примере мы задаем регулярное выражение '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', которое ищет электронные адреса в тексте. Результатом выполнения функции findall() является список, содержащий все найденные адреса электронной почты.
Пример 2: Поиск и замена слов в строке
import re
pattern = r'\bмама\b'
string = 'мама мыла раму, но мама не видела маму'
result = re.findall(pattern, string)
print(result) # Выведет: ['мама', 'мама', 'мама']
replaced_string = re.sub(pattern, 'папа', string)
print(replaced_string) # Выведет: 'папа мыла раму, но папа не видела папу'
В данном примере мы задаем регулярное выражение '\bмама\b', которое ищет слово "мама" как отдельное слово. Функция findall() возвращает список, содержащий все найденные совпадения. Затем мы используем функцию sub() из модуля re, чтобы заменить найденные слова "мама" на "папа" в исходной строке.
findall() - очень полезный метод в Python для выполнения поиска с использованием регулярных выражений. Он позволяет найти все совпадения в строке и вернуть их в форме списка. Этот метод может использоваться для различных задач, таких как поиск чисел, электронных адресов, слов и других шаблонов в тексте.