pyth_05_str
Заметка 5. Текстовая строчка
курса Математический практикум по Питону.
Шокуров Антон В.
shokurov.anton.v@yandex.ru
http://машинноезрение.рф
Версия 0.13

Аннотация

Показано как преобразовывать, искать подстроки и тому подобное. В частности, рассматриваются регулярные выражения. Показано как формируется список токенов и их значений. Методы замены подстрок и разбиения строки на подстроки. Рассматривается и чтение текстового файла с таблицей (цен акции за некий период).

Это предварительная версия! Любые замечания приветствуются.

Печать строки

Красивая печать

Конечно можно подставить любой объект. Например строчку.

Можно указать порядковый номер аргумента в фигурных скобоках явно.

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

Можно и саму переменную использовать в скобках (метода format тогда не будет использоваться ). Так, можно оперировать не порядковым номером, а именем переменной.

Выравнивание

Сложные преобразования

Упр. Сделать таблицу (center len и тому подобное) с двумя колонками. Первая выровнена по левой границе, а вторая по центру. Причем название колонок центрированы. Для упрощения ширину колонок можно считать известной. Например:

Замена

Ручной парзинг

Встроенными функциями

Числа

Напомню

Дата и время

Текстовый файл

Открытие файла

Считаем данные из файла.

После работы с файлом его следует закрыть

Дабы не забыть его закрыть принято использовать следующую конструкцию.

Если файла не существует, то будет ошибка

Можно проверить его существование.

Обработка текстовых данных

Считать файл построчно

Или даже так:

Можно исправить первоначальный код, а можно написать генератор.

Точки и значения вы сформировали. Теперь будем строить график. Для этого нужна ещё одна вспомогательная библиотека.

Построение графиков

Библиотека matplotlib применяется для вывода графиков. Точнее её подмодуль (подбиблиотека) pyplot.

Отмечу, что последняя строчка относится к система jupyter, а не самому языку python.

Отрисуем нужную функцию. Используем для этого 100 точек. После загрузки библитеки в систему, график по сформированным ранее данным стротися так:

Но можно конечно добавить отсчеты по оси x и разукрасить график.

Даже дата правильно отобразилась!

Упр. Вычислить и нарисовать скользящее среднее по нескольким дням. Обычное среднее, т.е. сумма деленная на количество. Если подать команду (plot) в той же ячейке, то будет обе кривые на графике.

Запись в файл

Текстовые данные можно и в файл обратно записать.

Если делать через правильную конструкцию:

В Линукс проверяем так:

Различные проверки

В более сложных, не табличных, текстовых файлах.

Отсечение

Префикс и суфикс

Истина, если начинается с нужной строки.

Истина, если завершается нужной строкой.

Регулярные выражения

Поиск подстроки

Нам нужно вот это

Перемещение по всем совпадениям

Следующий текст ищется просто сдвигом строки

При отсутствии искомой подстроки возвращается None.

Так можно сделать замену текста.

Есть и итератор

Можно даже указать количество замен.

Поиск сложных текстовых выражений

Опциональные буквы

? -- Позволяет указать, что предыдущий символ опционален, т.е. он может быть, а может и не быть.

Когда одного не хватает

+ -- говорит о том, что один или много.

А если вспомнить, что ставят и :

Подмена на мета символы

Можно искать символы по их стандартизованному названию.

Несколько вариантов для буквы

Когда несколько вариантов для буквы. В данном случае М и Ж.

В итоге нашли оба варианта нашлись.

Возможно сколько угодно... хоть 0

* -- 0 или более повторений...

Все подстроки найдены, даже с нулевым количеством пробелов.

Разбиение строки на подстроки

Так не совсем правильно:

Упр. В чем ошибка в прошлой ячейке? Как исправить регулярное выражение?

Целые объекты

Разные целые слов слов

А если нужно целые слова вместо букв?

В русском языке нужно убрать окончание:

Система старается сделать строчку как можно более длинной. Укажем ей возможность какого угодно количества букв (\w) в конце.

Но можно конечно указать конкретные.

На самом деле как мы увидим далее можно применять и для регулярных выражений, т.е. рекурсивно.

Поиск чисел

Что если нужно найти числа? Целые числа. Что есть корректно записанное целое число? Это символ из 1 до 9, а далее символы 0-9 в любом количестве.

Но сработает так

Нужно указать что перед найденной строкой не было цифр... Для этого есть мета символ ^

Понятие группы

Время найдено, но его все-равно нужно парзисть.

Но, теперь вырезаны отдельные найденные части.

Теперь можно и так:

Как их много

Упр. Как извлечь название групп? Должно получится ['часы', 'минуты', 'секунды', 'words']

???

Граматика

Ручной подход

Собственным циклом

Методом