Роман Сузи - Язык программирования Python

Здесь есть возможность читать онлайн «Роман Сузи - Язык программирования Python» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования Python: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования Python»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования — Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы. Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно–ориентированное программирование, функциональное программирование, событийно–управляемые программы (GUI–приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу.

Язык программирования Python — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования Python», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Соответствует целому числу. Возможно, со знаком.

r"\([+-]?\d+\)"

Число, стоящее в скобках. Скобки используются в самих регулярных выражениях, поэтому они экранируются "\".

r"[a–cA–C]{2}"

Соответствует строке из двух букв « a», « b» или « c». Например, « Ac», « CC», « bc».

r"aa|bb|cc|AA|BB|CC"

Строка из двух одинаковых букв.

r"([a–cA–C])\1"

Строка из двух одинаковых букв, но шаблон задан с использованием групп

r"aa|bb"

Соответствует « aa» или « bb»

r"a(a|b)b"

Соответствует « aab» или « abb»

r"^(?:\d{8}|\d{4}):\s*(.*)$"

Соответствует строке, которая начинается с набора из восьми или четырех цифр и двоеточия. Все, что идет после двоеточия и после следующих за ним пробелов, выделяется в группу с номером 1, тогда как набор цифр в группу не выделен.

r"(\w+)=.*\b\1\b"

Слова слева и справа от знака равенства присутствуют. Операнд "\1"соответствует группе с номером 1, выделенной с помощью скобок.

r"(?P\w+)=.*\b(?P=var)\b"

То же самое, но теперь используется именованная группа var.

r"\bregular(?=\s+expression)"

Соответствует слову « regular» только в том случае, если за ним после пробелов следует « expression»

r"(?<=regular )expression"

Соответствует слову « expression», перед которым стоит « regular»и один пробел.

Следует заметить, что примеры со взглядом назад могут сильно влиять на производительность, поэтому их не стоит использовать без особой необходимости.

Отладка регулярных выражений

Следующий небольшой сценарий позволяет отлаживать регулярное выражение, при условии, что есть пример строки, которой шаблон должен удовлетворять. Взят кусочек лога iptables, его необходимо разобрать для получения полей. Интересны строки, в которых после kernel:стоит PAY:, а в этих строках нужно получить дату, значения DST, LEN и DPT:

import re

def debug_regex(regex, example):

"""Отладка рег. выражения. Перед отладкой лучше убрать лишние скобки """

last_good = ""

for i in range(1, len(regex)):

try:

if re.compile(regex[:i]).match(example):

last_good = regex[:i]

except:

continue

return last_good

example = ""«Nov 27 15:57:59 lap kernel: PAY: IN=eth0 OUT=

MAC=00:50:da:d9:df:a2:00:00:1c:b0:c9:db:08:00 SRC=192.168.1.200

DST=192.168.1.115

LEN=1500 TOS=0x00 PREC=0x00 TTL=64 ID=31324 DF PROTO=TCP SPT=8080 DPT=1039

WINDOW=17520 RES=0x00 ACK PSH URGP=0»""

log_re = r"""[A–Za–z]{3}\s+\d+\s+\d\d\d\d:\d\d) \S+ kernel: PAY: .+

DST=(?P\S+).* LEN=(?P\d+).* DPT=(?P\d+) """

print debug_regex(log_re, example)

Функция debug_regex()пробует сопоставлять пример с увеличивающимися порциями регулярного выражения и возвращает последнее удавшееся сопоставление:

[A–Za–z]{3}\s+\d+\s+\d\d

Сразу видно, что не поставлен символ :.

Примеры применения регулярного выражения

Обработка лога

Предыдущий пример регулярного выражения позволит выделить из лога записи с определенной меткой и подать их в сокращенном виде:

import re

log_re = re.compile(r"""(?P[A–Za–z]{3}\s+\d+\s+\d\d:\d\d:\d\d) \S+

kernel:

PAY: .+ DST=(?P\S+).* LEN=(?P\d+).* DPT=(?P\d+) """)

for line in open("message.log"):

m = log_re.match(line)

if m:

print "%(date)s %(dst)s:%(dpt)s size=%(len)s" % m.groupdict()

В результате получается

Nov 27 15:57:59 192.168.1.115:1039 size=1500

Nov 27 15:57:59 192.168.1.200:8080 size=40

Nov 27 15:57:59 192.168.1.115:1039 size=515

Nov 27 15:57:59 192.168.1.200:8080 size=40

Nov 27 15:57:59 192.168.1.115:1039 size=40

Nov 27 15:57:59 192.168.1.200:8080 size=40

Nov 27 15:57:59 192.168.1.115:1039 size=40

Анализ записи числа

Хороший пример регулярного выражения можно найти в модуле fpformat. Это регулярное выражение позволяет разобрать запись числа (в том виде, в каком числовой литерал принято записывать в Python):

decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)(([eE][-+]?\d+)?)$')

# Следующие части числового литерала выделяются с помощью групп:

# \0 — весь литерал

# \1 — начальный знак или пусто

# \2 — цифры слева от точки

# \3 — дробная часть (пустая или начинается с точки)

# \4 — показатель (пустой или начинается с 'e' или 'E')

Например:

import re

decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)((?:[eE][-+]?\d+)?)$')

print decoder.match("12.234").groups()

print decoder.match(" — 0.23e–7").groups()

print decoder.match("1e10").groups()

Получим

('', '12', '.234', '')

('-', '', '.23', 'e–7')

('', '1', '', 'e10')

Множественная замена

В некоторых приложениях требуется производить в тексте сразу несколько замен. Для решения этой задачи можно использовать метод sub()вместе со специальной функцией, которая и будет управлять заменами:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования Python»

Представляем Вашему вниманию похожие книги на «Язык программирования Python» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования Python»

Обсуждение, отзывы о книге «Язык программирования Python» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x