>> print("Найдено" if p. match("str123", 3) else "Нет") Найдено >>> print("Найдено" if p">
Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Поиск первого совпадения с шаблономСодержание книги
Поиск на нашем сайте
>>> import re >>> p = re.compile(r"[0-9]+") >>> print("Найдено" if p.match("str123") else "Нет") Нет >>> print("Найдено" if p.match("str123", 3) else "Нет") Найдено >>> print("Найдено" if p.match("123str") else "Нет") Найдено
>>> p = r"[0-9]+" >>> print("Найдено" if re.match(p, "str123") else "Нет") Нет >>> print("Найдено" if re.match(p, "123str") else "Нет") Найдено >>> p = re.compile(r"[0-9]+") >>> print("Найдено" if re.match(p, "123str") else "Нет") Найдено
>>> p = re.compile(r"[0-9]+") >>> print("Найдено" if p.search("str123") else "Нет") Найдено >>> print("Найдено" if p.search("123str") else "Нет") Найдено >>> print("Найдено" if p.search("123str", 3) else "Нет") Нет
>>> p = r"[0-9]+" >>> print("Найдено" if re.search(p, "str123") else "Нет") Найдено >>> p = re.compile(r"[0-9]+") >>> print("Найдено" if re.search(p, "str123") else "Нет") Найдено
>>> p = re.compile("[Pp]ython") >>> print("Найдено" if p.fullmatch("Python") else "Нет") Найдено >>> print("Найдено" if p.fullmatch("py") else "Нет") Нет >>> print("Найдено" if p.fullmatch("PythonWare") else "Нет") Нет >>> print("Найдено" if p.fullmatch("PythonWare", 0, 6) else "Нет") Найдено
>>> p = "[Pp]ython" >>> print("Найдено" if re.fullmatch(p, "Python") else "Нет") Найдено >>> print("Найдено" if re.fullmatch(p, "py") else "Нет") Нет
Листинг 7.12. Суммирование неопределенного количества чисел # -*- coding: utf-8 -*- import re print("Введите слово 'stop' для получения результата") summa = 0 p = re.compile(r"^[-]?[0-9]+$", re.S) while True: x = input("Введите число: ") if x == "stop": break # Выход из цикла if not p.search(x): print("Необходимо ввести число, а не строку!") continue # Переходим на следующую итерацию цикла x = int(x) # Преобразуем строку в число summa += x print("Сумма чисел равна:", summa) input()
>>> p = re.compile(r"(?P<num>[0-9]+)(?P<str>[a-z]+)") >>> m = p.search("123456string 67890text") >>> m <_sre.SRE_Match object at 0x00FC9DE8> >>> m.re.groups, m.re.groupindex (2, {'num': 1, 'str': 2}) >>> p.groups, p.groupindex (2, {'num': 1, 'str': 2}) >>> m.string '123456string 67890text' >>> m.lastindex, m.lastgroup (2, 'str') >>> m.pos, m.endpos (0, 22)
>>> p = re.compile(r"(?P<num>[0-9]+)(?P<str>[a-z]+)") >>> m = p.search("123456string 67890text") >>> m.group(), m.group(0) # Полное соответствие шаблону ('123456string', '123456string') >>> m.group(1), m.group(2) # Обращение по индексу ('123456', 'string') >>> m.group("num"), m.group("str") # Обращение по названию ('123456', 'string') >>> m.group(1, 2), m.group("num", "str") # Несколько параметров (('123456', 'string'), ('123456', 'string'))
>>> p = re.compile(r"(?P<num>[0-9]+)(?P<str>[a-z])?") >>> m = p.search("123456") >>> m.groupdict() {'num': '123456', 'str': None} >>> m.groupdict("") {'num': '123456', 'str': ''}
>>> p = re.compile(r"(?P<num>[0-9]+)(?P<str>[a-z])?") >>> m = p.search("123456") >>> m.groups() ('123456', None) >>> m.groups("") ('123456', '')
>>> p = re.compile(r"(?P<num>[0-9]+)(?P<str>[a-z]+)") >>> s = "str123456str" >>> m = p.search(s) >>> m.start(), m.end(), m.span() (3, 12, (3, 12)) >>> m.start(1), m.end(1), m.start("num"), m.end("num") (3, 9, 3, 9) >>> m.start(2), m.end(2), m.start("str"), m.end("str") (9, 12, 9, 12) >>> m.span(1), m.span("num"), m.span(2), m.span("str") ((3, 9), (3, 9), (9, 12), (9, 12)) >>> s[m.start(1):m.end(1)], s[m.start(2):m.end(2)] ('123456', 'str')
>>> p = re.compile(r"<(?P<tag1>[a-z]+)><(?P<tag2>[a-z]+)>") >>> m = p.search("<br><hr>") >>> m.expand(r"<\2><\1>") # \номер '<hr><br>' >>> m.expand(r"<\g<2>><\g<1>>") # \g<номер> '<hr><br>' >>> m.expand(r"<\g<tag2>><\g<tag1>>") # \g<название> '<hr><br>'
Листинг 7.13. Проверка e-mail на соответствие шаблону # -*- coding: utf-8 -*- import re email = input("Введите e-mail: ") pe = r"^([a-z0-9_.-]+)@(([a-z0-9-]+\.)+[a-z]{2,6})$" p = re.compile(pe, re.I | re.S) m = p.search(email) if not m: print("E-mail не соответствует шаблону") else: print("E-mail", m.group(0), "соответствует шаблону") print("ящик:", m.group(1), "домен:", m.group(2)) input() Поиск всех совпадений с шаблоном >>> import re >>> p = re.compile(r"[0-9]+") >>> p.findall("2007, 2008, 2009, 2010, 2011") ['2007', '2008', '2009', '2010', '2011'] >>> p = re.compile(r"[a-z]+") >>> p.findall("2007, 2008, 2009, 2010, 2011") [] >>> t = r"(([0-9]{3})-([0-9]{2})-([0-9]{2}))" >>> p = re.compile(t) >>> p.findall("322-77-20, 528-22-98") [('322-77-20', '322', '77', '20'), ('528-22-98', '528', '22', '98')]
>>> re.findall(r"[0-9]+", "1 2 3 4 5 6") ['1', '2', '3', '4', '5', '6'] >>> p = re.compile(r"[0-9]+") >>> re.findall(p, "1 2 3 4 5 6") ['1', '2', '3', '4', '5', '6']
>>> p = re.compile(r"[0-9]+") >>> for m in p.finditer("2007, 2008, 2009, 2010, 2011"): print(m.group(0), "start:", m.start(), "end:", m.end())
2007 start: 0 end: 4 2008 start: 6 end: 10 2009 start: 12 end: 16 2010 start: 18 end: 22 2011 start: 24 end: 28
>>> p = re.compile(r"<b>(.+?)</b>", re.I | re.S) >>> s = "<b>Text1</b>Text2<b>Text3</b>" >>> for m in re.finditer(p, s): print(m.group(1))
Text1 Text3 Замена в строке >>> import re >>> p = re.compile(r"<(?P<tag1>[a-z]+)><(?P<tag2>[a-z]+)>") >>> p.sub(r"<\2><\1>", "<br><hr>") # \номер '<hr><br>' >>> p.sub(r"<\g<2>><\g<1>>", "<br><hr>") # \g<номер> '<hr><br>' >>> p.sub(r"<\g<tag2>><\g<tag1>>", "<br><hr>") # \g<название> '<hr><br>'
# -*- coding: utf-8 -*- import re def repl(m): """ Функция для замены. m — объект Match """ x = int(m.group(0)) x += 10 return "{0}".format(x)
p = re.compile(r"[0-9]+") # Заменяем все вхождения print(p.sub(repl, "2008, 2009, 2010, 2011")) # Заменяем только первые два вхождения print(p.sub(repl, "2008, 2009, 2010, 2011", 2)) input()
# -*- coding: utf-8 -*- import re def repl(m): """ Функция для замены. m — объект Match """ tag1 = m.group("tag1").upper() tag2 = m.group("tag2").upper() return "<{0}><{1}>".format(tag2, tag1) p = r"<(?P<tag1>[a-z]+)><(?P<tag2>[a-z]+)>" print(re.sub(p, repl, "<br><hr>")) input()
>>> p = re.compile(r"[0-9]+") >>> p.subn("0", "2008, 2009, 2010, 2011") ('0, 0, 0, 0', 4)
>>> p = r"200[79]" >>> re.subn(p, "2001", "2007, 2008, 2009, 2010") ('2001, 2008, 2001, 2010', 2)
>>> p = re.compile(r"<(?P<tag1>[a-z]+)><(?P<tag2>[a-z]+)>") >>> m = p.search("<br><hr>") >>> m.expand(r"<\2><\1>") # \номер '<hr><br>' >>> m.expand(r"<\g<2>><\g<1>>") # \g<номер> '<hr><br>' >>> m.expand(r"<\g<tag2>><\g<tag1>>") # \g<название> '<hr><br>' Прочие функции и методы >>> import re >>> p = re.compile(r"[\s,.]+") >>> p.split("word1, word2\nword3\r\nword4.word5") ['word1', 'word2', 'word3', 'word4', 'word5'] >>> p.split("word1, word2\nword3\r\nword4.word5", 2) ['word1', 'word2', 'word3\r\nword4.word5']
>>> p = re.compile(r"[0-9]+") >>> p.split("word, word\nword") ['word, word\nword']
>>> p = re.compile(r"[\s,.]+") >>> re.split(p, "word1, word2\nword3") ['word1', 'word2', 'word3'] >>> re.split(r"[\s,.]+", "word1, word2\nword3") ['word1', 'word2', 'word3']
>>> print(re.escape(r"[]().*")) \[\]\(\)\.\*
>>> re.purge() Списки, кортежи, множества и диапазоны >>> arr = [1, 2, 3] # Создаем список >>> arr[0] # Получаем элемент по индексу >>> arr[0] = 50 # Изменяем элемент по индексу >>> arr [50, 2, 3]
>>> t = (1, 2, 3) # Создаем кортеж >>> t[0] # Получаем элемент по индексу >>> t[0] = 50 # Изменить элемент по индексу нельзя! Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> t[0] = 50 # Изменить элемент по индексу нельзя! TypeError: 'tuple' object does not support item assignment
>>> set([0, 1, 1, 2, 3, 3, 4]) {0, 1, 2, 3, 4}
>>> r = range(0, 101, 10) >>> for i in r: print(i, end = " ")
0 10 20 30 40 50 60 70 80 90 100 Создание списка >>> list() # Создаем пустой список [] >>> list("String") # Преобразуем строку в список ['S', 't', 'r', 'i', 'n', 'g'] >>> list((1, 2, 3, 4, 5)) # Преобразуем кортеж в список [1, 2, 3, 4, 5]
>>> arr = [1, "str", 3, "4"] >>> arr [1, 'str', 3, '4']
>>> arr = [] # Создаем пустой список >>> arr.append(1) # Добавляем элемент1 (индекс 0) >>> arr.append("str") # Добавляем элемент2 (индекс 1) >>> arr [1, 'str']
>>> arr = [] >>> arr[] = 10 SyntaxError: invalid syntax >>> arr[0] = 10 Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> arr[0] = 10 IndexError: list assignment index out of range
>>> x = y = [1, 2] # Якобы создали два объекта >>> x, y ([1, 2], [1, 2])
>>> y[1] = 100 # Изменяем второй элемент >>> x, y # Изменилось значение сразу в двух переменных ([1, 100], [1, 100])
>>> x, y = [1, 2], [1, 2] >>> y[1] = 100 # Изменяем второй элемент >>> x, y ([1, 2], [1, 100])
>>> arr = [ [] ] * 2 # Якобы создали два вложенных списка >>> arr [[], []] >>> arr[0].append(5) # Добавляем элемент >>> arr # Изменились два элемента [[5], [5]]
>>> arr = [] >>> for i in range(2): arr.append([])
>>> arr [[], []] >>> arr[0].append(5); arr [[5], []]
>>> arr = [ [] for i in range(2) ] >>> arr [[], []] >>> arr[0].append(5); arr [[5], []]
>>> x = y = [1, 2] # Неправильно >>> x is y # Переменные содержат ссылку на один и тот же список True >>> x, y = [1, 2], [1, 2] # Правильно >>> x is y # Это разные объекты False
Листинг 8.1. Создание поверхностной копии списка >>> x = [1, 2, 3, 4, 5] # Создали список >>> # Создаем копию списка >>> y = list(x) # или с помощью среза: y = x[:] >>> # или вызовом метода copy(): y = x.copy() >>> y [1, 2, 3, 4, 5] >>> x is y # Оператор показывает, что это разные объекты False >>> y[1] = 100 # Изменяем второй элемент >>> x, y # Изменился только список в переменной y ([1, 2, 3, 4, 5], [1, 100, 3, 4, 5])
>>> x = [1, [2, 3, 4, 5]] # Создали вложенный список >>> y = list(x) # Якобы сделали копию списка >>> x is y # Разные объекты False >>> y[1][1] = 100 # Изменяем элемент >>> x, y # Изменение затронуло переменную x!!! ([1, [2, 100, 4, 5]], [1, [2, 100, 4, 5]])
Листинг 8.2. Создание полной копии списка >>> import copy # Подключаем модуль copy >>> x = [1, [2, 3, 4, 5]] >>> y = copy.deepcopy(x) # Делаем полную копию списка >>> y[1][1] = 100 # Изменяем второй элемент >>> x, y # Изменился только список в переменной y ([1, [2, 3, 4, 5]], [1, [2, 100, 4, 5]])
>>> import copy # Подключаем модуль copy >>> x = [1, 2] >>> y = [x, x] # Два элемента ссылаются на один объект >>> y [[1, 2], [1, 2]] >>> z = copy.deepcopy(y) # Сделали копию списка >>> z[0] is x, z[1] is x, z[0] is z[1] (False, False, True) >>> z[0][0] = 300 # Изменили один элемент >>> z # Значение изменилось сразу в двух элементах! [[300, 2], [300, 2]] >>> x # Начальный список не изменился [1, 2] Операции над списками >>> arr = [1, "str", 3.2, "4"] >>> arr[0], arr[1], arr[2], arr[3] (1, 'str', 3.2, '4')
>>> x, y, z = [1, 2, 3] # Позиционное присваивание >>> x, y, z (1, 2, 3) >>> x, y = [1, 2, 3] # Количество элементов должно совпадать Traceback (most recent call last): File "<pyshell#86>", line 1, in <module> x, y = [1, 2, 3] # Количество элементов должно совпадать ValueError: too many values to unpack (expected 2)
>>> x, y, *z = [1, 2, 3]; x, y, z (1, 2, [3]) >>> x, y, *z = [1, 2, 3, 4, 5]; x, y, z (1, 2, [3, 4, 5]) >>> x, y, *z = [1, 2]; x, y, z (1, 2, []) >>> *x, y, z = [1, 2]; x, y, z ([], 1, 2) >>> x, *y, z = [1, 2, 3, 4, 5]; x, y, z (1, [2, 3, 4], 5) >>> *z, = [1, 2, 3, 4, 5]; z [1, 2, 3, 4, 5]
>>> arr = [1, 2, 3, 4, 5] >>> len(arr) # Получаем количество элементов >>> arr[len(arr)-1] # Получаем последний элемент
>>> arr = [1, 2, 3, 4, 5] >>> arr[5] # Обращение к несуществующему элементу Traceback (most recent call last): File "<pyshell#99>", line 1, in <module> arr[5] # Обращение к несуществующему элементу IndexError: list index out of range
>>> arr = [1, 2, 3, 4, 5] >>> arr[-1], arr[len(arr)-1] # Обращение к последнему элементу (5, 5)
>>> arr = [1, 2, 3, 4, 5] >>> arr[0] = 600 # Изменение элемента по индексу >>> arr [600, 2, 3, 4, 5]
>>> arr = [1, 2, 3, 4, 5] >>> m = arr[:]; m # Создаем поверхностную копию и выводим значения [1, 2, 3, 4, 5] >>> m is arr # Оператор is показывает, что это разные объекты False
>>> arr = [1, 2, 3, 4, 5] >>> arr[::-1] # Шаг -1 [5, 4, 3, 2, 1]
>>> arr[1:] # Без первого элемента [2, 3, 4, 5] >>> arr[:-1] # Без последнего элемента [1, 2, 3, 4]
>>> arr[0:2] # Символ с индексом 2 не входит в диапазон [1, 2]
>>> arr[-1:] # Последний элемент списка [5]
>>> arr[1:4] # Возвращаются элементы с индексами 1, 2 и 3 [2, 3, 4]
>>> arr = [1, 2, 3, 4, 5] >>> arr[1:3] = [6, 7] # Изменяем значения элементов с индексами 1 и 2 >>> arr [1, 6, 7, 4, 5] >>> arr[1:3] = [] # Удаляем элементы с индексами 1 и 2 >>> arr [1, 4, 5]
>>> arr1 = [1, 2, 3, 4, 5] >>> arr2 = [6, 7, 8, 9] >>> arr3 = arr1 + arr2 >>> arr3 [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> arr = [1, 2, 3, 4, 5] >>> arr += [6, 7, 8, 9] >>> arr [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [1, 2, 3] * 3 # Операция повторения [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> 2 in [1, 2, 3, 4, 5], 6 in [1, 2, 3, 4, 5] # Проверка на вхождение (True, False) Многомерные списки >>> arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
>>> arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
>>> arr[1][1]
>>> arr = [ [1, ["a", "b"], 3], [4, 5, 6], [7, 8, 9] ] >>> arr[0][1][0] 'a' >>> arr = [ [1, { "a": 10, "b": ["s", 5] } ] ] >>> arr[0][1]["b"][0] 's' Перебор элементов списка >>> arr = [1, 2, 3, 4, 5] >>> for i in arr: print(i, end=" ")
1 2 3 4 5
>>> arr = [1, 2, 3, 4] # Элементы имеют неизменяемый тип (число) >>> for i in arr: i += 10
>>> arr # Список не изменился [1, 2, 3, 4] >>> arr = [ [1, 2], [3, 4] ] # Элементы имеют изменяемый тип (список) >>> for i in arr: i[0] += 10 >>> arr # Список изменился [[11, 2], [13, 4]]
arr = [1, 2, 3, 4] for i in range(len(arr)): arr[i] *= 2 print(arr) # Результат выполнения: [2, 4, 6, 8]
arr = [1, 2, 3, 4] for i, elem in enumerate(arr): arr[i] *= 2 print(arr) # Результат выполнения: [2, 4, 6, 8]
arr = [1, 2, 3, 4] i, c = 0, len(arr) while i < c: arr[i] *= 2 i += 1 print(arr) # Результат выполнения: [2, 4, 6, 8]
|
||||
|
Последнее изменение этой страницы: 2016-06-23; просмотров: 307; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.39 (0.007 с.) |