/* import re s = 'По всем вопросам пишите на vasiliy-pupkin@gmail.com, или на secondemail@yandex.ru, отвечу сразу. Или пишите моему ассистенту secretary@gmail.com!' emails = re.findall(r'[\w\.-]+@[\w\.-]+', s) for email in emails: print(email)
Имеется файл transactions.txt , в котором даты указаны в формате MM/DD/YYYY , при этом в некоторых случаях месяц обозначен первыми тремя буквами: NOV , dec , JAN . Нужно привести даты к формату MM-DD-YYYY .
#формат дат в файле transactions.txt nov/14/2021 dec/15/2021 12/16/2021 dec/17/2021 jan/03/2022 JAN/10/22
import fileinput import re fn = "transactions.txt" for line in fileinput.input(fn, inplace=True): new_line = re.sub('(\d|[a-yA-Y])\/(\d)\/(\d)', r'\1-\2-\3', line) print(new_line)
#Содержимое файла после выполнения кода: nov-14-2021 dec-15-2021 12-16-2021 dec-17-2021 jan-03-2022 JAN-10-2022
Вводится последовательность строк. Нужно вывести строки, в которых фрагмент «кот » присутствует в качестве подстроки не менее 2 раз.
#Пример ввода кот-кот кот и кот котофей котейка кот кот и котенок
import re import sys for line in sys.stdin: line = line.strip() if re.search(r"кот.*?кот", line): print(line)
Дана последовательность строк. Нужно вывести те, в которых «кот » встречается в качестве отдельного слова.
#Пример ввода: кот в сапогах кошка и кот котофей котяра
import re import sys for line in sys.stdin: line = line.rstrip() if re.search(r"\bкот\b", line): print(line)
#Вывод кот в сапогах кошка и кот
Вывести слова, состоящие из двух одинаковых слогов.
#Пример ввода тартар тик-так сносно варвар барабан
import re import sys for line in sys.stdin: line = line.strip() if re.search(r"\b(\w+)\1\b", line): print(line)
#Вывод тартар сносно варвар
Вводится последовательность строк. В каждой строке нужно поменять местами две первые буквы в каждом слове, состоящем из двух и более букв.
#Пример ввода это пример текста в котором нужно поменять буквы
import sys import re for line in sys.stdin: line = line.rstrip() print(re.sub(r'\b(\w)(\w)', r"\2\1", line))
#Вывод тэо рпимер еткста в октором унжно опменять убквы
Напишите функцию для валидации мобильного номера в международном формате. Корректным считается представление номера в таком виде:
+7(912)15-16-896, 8(912)15-16-896 +79121516896, 89121516896 +7(912)151-68-96, 8(912)151-68-96 +7912-151-6896, 87912-151-6896
import re pattern = re.compile(r'(\+7|8).*?(\d).*?(\d).*?(\d).*?(\d)') def isValid(number): if re.match(pattern, number): print("ДА") else: print("НЕТ") isValid(input())
Напишите программу для парсинга номеров телефонов с тестовой страницы .
import urllib.request from re import findall url = "http://www.summet.com/dmsi/html/codesamples/addresses.html" response = urllib.request.urlopen(url) data = response.read() s = data.decode() phones = findall("\(\d\) \d-\d", s) for number in phones: print(number)
Нужно извлечь все имена и фамилии из текста.
import re s = 'На встрече присутствовали: профессор Владимир Успенский, физик-ядерщик Сергей Ковалев, президент клуба Владимир Медведев и космонавт Юрий Титов.' name = r"[А-Я][а-я]+,?\s+" last_name = r"[А-Я][а-я]+" persons = re.findall(name + last_name, s) for item in persons: print(item)
Нужно получить URL всех png и jpg изображений, использованных на главной странице proglib.io :
import re import requests def getURL(text): urls = [] results = re.findall(r'(?:http\:|https\:)?\/\/.*\.(?:png|jpg)', text) for x in results: if not x.startswith('http:'): x = 'http:' + x urls.append(x) return urls def getImages(url): resp = requests.get(url) urls = getURL(resp.text) print('urls', urls) getImages('https://proglib.io')
Заключение Regex в Python – мощный, гибкий, но достаточно сложный инструмент. Регулярные выражения сложно составлять, поддерживать и редактировать. При работе с текстовыми файлами Regex чаще всего можно заменить методами строк, а при парсинге, в большинстве случаев, использование XPath и CSS-селекторов окажется более эффективным.
Материалы по теме Источник