Как стать автором
Поиск
Написать публикацию
Обновить
395.7

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Регулярные выражения, пособие для новичков. Часть 2

Время на прочтение18 мин
Количество просмотров264K
В первой половине этого пособия мы раскрыли лишь малую часть возможностей регулярных выражений. Во второй, большей, половине мы рассмотрим некоторые новые метасимволы, то, как использовать группы для получения частей совпавшего текста, разбивать строки, находить и замещать части текста. В конце немного поговорим о распространенных ошибках.
Читать дальше →

Регулярные выражения, пособие для новичков. Часть 1

Время на прочтение14 мин
Количество просмотров920K
Регулярные выражения (РВ) это, по существу, крошечный язык программирования, встроенный в Python и доступный при помощи модуля re. Используя его, вы указывается правила для множества возможных строк, которые вы хотите проверить; это множество может содержать английские фразы, или адреса электронной почты, или TeX команды, или все что угодно. С помощью РВ вы можете задавать вопросы, такие как «Соответствует ли эта строка шаблону?», или «Совпадает ли шаблон где-нибудь с этой строкой?». Вы можете также использовать регулярные выражения, чтобы изменить строку или разбить ее на части различными способами.
Читать дальше →

Собираем данные с помощью Scrapy

Время на прочтение4 мин
Количество просмотров117K
Здесь уже проскакивали вскользь упоминания об этом фреймворке для сбора данных. Инструмент действительно мощный и заслуживает большего внимания. В этом обзоре я расскажу, как

scrapy

  • создать паука, выполняющего GET запросы,
  • извлекать данные из HTML документа,
  • обрабатывать и экспортировать данные.





Читать дальше →

Рисуем цветной кубик в Mayavi

Время на прочтение10 мин
Количество просмотров6.2K
Приветствую, хабравчане!

Сегодня хочу вам рассказать о том, что такое Mayavi и с чем его запивают его едят.

Mayavi — это кроссплатформенное приложение для визуализации научных данных (и не только). Распространяется по лицензии BSD, что позволяет использовать его в коммерческих приложениях.
image

Что умеет?
  • Строить 2D и 3D модели на основе скалярных/векторных данных
  • Открывать файлы VTK, PLOT3D
  • Сохранять результаты рендера в различных графических форматах
  • Может даже рендерить результаты MRI(Магнитно-резонансная томография)


Работать с ним можно тремя способами:
1) Работать непосредственно в интерфейсе Mayavi.
2) Подгружать/передавать в Mayavi уже готовые данные.
3) Написать питоновский скрипт, в котором можно задать для Mayavi все желаемые возможности.

Читать дальше →

Kyiv.py #2

Время на прочтение1 мин
Количество просмотров800
Друзья питоноводы, в это воскресенье, 13 марта, в 11.00, совместно с компанией Ciklum по адресу г. Киев, ул. Амосова 12, мы проведем вторую открытую встречу Kyiv.py — ua.pycon.org/news/25

В программе встречи:
  • Андрей Светлов — взаимодействие формы с представлением и модели, олицетворяющей предметную область
  • Андрей Хаврюченко — создание UI мокапов
  • + open-space общение
Присоединятесь, будем рады всех видеть!
Читать дальше →

Простая библиотека для парсинга HTML

Время на прочтение2 мин
Количество просмотров10K
Недавно зарелизил Leaf, это небольшая библиотека для парсинга HTML на Python.
Она уже довольно долгое время покрывает все мои нужды в парсинге, но еще есть идеи для развития.
Эта библиотека по сути обертка над lxml, которая делает работу с ней гораздо приятней.
далее...

Простой конвертер текста в речь с использованием Google Translate

Время на прочтение1 мин
Количество просмотров48K

Недавно Гугль обновил русский язык в Google Translate, сильно улучшив произношение.
Я решил сделать конвертер текста в речь на базе их переводчика.
Читать дальше →

Запуск Chaco и Mayavi на PySide

Время на прочтение4 мин
Количество просмотров1.8K
Ну вот и появился долгожданный релиз PySide. Некоторые хабравчане начнут им пользоваться в первый раз, некоторые уже имели с ним дело.

В своей работе приходится пользоваться кроссплатформенными визуализатором Mayavi и построителем графиков Chaco (кому интересно — читаем code.enthought.com/chaco и code.enthought.com/projects/mayavi). Моей задачей было встроить их фрэймы в свое приложение HPGL-GUI. Изначально я писал все на PyQt4 и в меня устраивало все, кроме одной вещи. Проблемой стала лицензия. PySide выпускается под LGPL v2.1, что как раз подходит под коммерческие нужды.

На помощь пришел PySide, который уже начали активно использовать в качестве бэкэнда к продуктам Enthought. Тут-то меня и ждали первые подводные камни.

Отсутствие документации как именно использовать PySide для встраивания.
Немного проблуждав по исходникам, выяснил, что достаточно указать переменную окружения 'QT_API' в значение 'pyside':

import os
os.environ['QT_API'] = 'pyside'

Несмотря на это работать приложение отказывалось. Полез править исходники. Изменений оказалось вроде бы и не так много, но отыскивать проблемы с нуля довольно противно и долго. Надеюсь дальнейшие инструкции помогут кому-то.

Читать дальше →

Непрерывное тестирование питонопроекта

Время на прочтение7 мин
Количество просмотров24K
Программист зверь ленивый, поэтому всё, что будет делаться больше одного раза надо непременно заскриптовать.

Я уже некоторое время ковыряю TDD и задача постоянного контроля качества для меня становится всё актуальней. Особенно при пополнении команды новыми разработчиками.

Сначала я запускал тесты руками: save, switch, $ nosetests. Потом к тестам добавились проверялки качества кода и пришлось всё засунуть в скрипт:
pyflakes *.py
pep8 *.py
pylint *.py
nosetests


Скрипт запускать каждый раз ужасно лениво, поэтому небольшая оболочка на inotifywait стала запускать тесты и проверки после каждого сохранения:
while true; do
inotifywait -e modify project/*.py -qq; clear
./do_tests
done


Тут я стал более-менее доволен происходящим и даже на некоторое время расслабился. Но ведь программист кроме того, что ленив ещё и горд, поэтому результаты хочется кому-нибудь показать. Чтобы вести историю происходящего (которая очень помогает когда заходит начальник начальника и спрашивает: «ну-с, чем вы занимались последний месяц?») уже есть система контроля версий. Но она показывает только, что сделано и не даёт обзора успешности каждой ревизии. Получается что код лежит, но непонятно в каком он состоянии и что где ещё надо сделать.

Кроме того довольно тяжело следить за коллегами, которые тоже могут что-то сделать и забыть прогнать тесты, в результате в репозитории лежит битый код, не прошедший code review и при очередном pull может внезапно начаться clusterfuck.

И тут очень вовремя kmmbvnr@lj выпустил скринкаст, в котором он демонстрировал интеграцию тестирования для django-проектов с сабжем Jenkins (бывш. Hudson). Посмотрел я на все эти красоты, графики и отчёты и тоже захотел чтобы всё само пело и играло. Но у него django-jenkins, как и следует из названия, встраивается в джангу и генерит отчёты используя хитрую систему. Мой проект до джанги не дорос и скорее всего не дорастёт — это достаточно тривиальное WSGI-приложение, которое правда стремительно разрастается. Пришлось поднимать всё с нуля.

Воскресенье я на это убил, но в целом всё довольно прямолинейно и теперь у меня есть симпатичные отчёты:



Что внутри?
Читать дальше →

Pythonic

Время на прочтение7 мин
Количество просмотров38K
Итак, что же это значит, когда кто-либо говорит, что foo выглядит как pythonic? Что значит, когда кто-либо смотрит в наш код и говорит, что он unpythonic? Давайте попробуем разобраться.

В Python-сообществе существует неологизм pythonic, который можно трактовать по разному, но в общем случае он характеризует стиль кода. Поэтому утверждение, что какой-либо код является pythonic, равносильно утверждению, что он написан в соответствии с идиома Python’a. Аналогично, такое утверждение в отношении интерфейса, или какой-либо функциональности, означает, что он (она) согласуется с идиомами Python’a и хорошо вписывается в экосистему.

Напротив, метка unpythonic означает, что код представляет собой грубую попытку записать код какого-либо другого языка программирования в синтаксисе Python, а не идиоматическую трансформацию.

Понятие Pythonicity плотно связано с минималистической концепцией Python’a и уходом от принципа «существует много способов сделать это». Нечитабельный код, или непонятные идиомы – все это unpythonic.

При переходе от одного языка к другому, некоторые вещи должны быть «разучены». Что мы знаем из других языков программирования, что не будет к месту в Python’e?
Читать дальше →

Python Module Usage Stats – Feb 2011

Время на прочтение2 мин
Количество просмотров939
Ниже список 30 наиболее используемых «базовых модулей», основанный на количестве скачиваний с проекта PyPI. Эти результаты основаны на 11,204 загруженных пакетах. Подробности ниже.
Читать дальше →

Заметки об объектной системе языка Python ч.3

Время на прочтение12 мин
Количество просмотров33K
Третья часть заметок об объектной системе python'a (первая и вторая части). В статье рассказывается о том, почему c.__call__() не то же самое, что и c(), как реализовать singleton с помощью метаклассов, что такое name mangling и как оно работает.

Читать дальше →

Заметки об объектной системе языка Python ч.2

Время на прочтение10 мин
Количество просмотров91K
Вторая часть заметок об объектной системе python'a (первая часть тут). В этой статье рассказывается, что такое классы, метаклассы, type, object и как происходит поиск атрибутов в классе.

Читать дальше →

Ближайшие события

Заметки об объектной системе языка Python ч.1

Время на прочтение8 мин
Количество просмотров67K
Несколько заметок об объектной системе python'a. Рассчитаны на тех, кто уже умеет программировать на python. Речь идет только о новых классах (new-style classes) в python 2.3 и выше. В этой статье рассказывается, что такое объекты и как происходит поиск атрибутов.

Читать дальше →

Использование библиотеки для полнотекстового поиска Xapian в Python

Время на прочтение4 мин
Количество просмотров11K
Сегодня, в эпоху Web 2.0, когда контента на сайтах становится все больше и больше, перед разработчиками встает задача реализации полнотекстового поиска.

Вариантов немного:
  • использовать виджеты от разработчиков поисковых систем (Google, Яндекс, etc): легко внедрить, привычный для пользователя интерфейс, поддержка морфологии, исправление слов по словарю, возможно более быстрая индексация сайта поисковыми системами, но, как правило ограниченные возможности по настройке и неизбежное запаздывание индексации;
  • использовать встроенные в СУБД средства (например FULLTEXT-индекс для MySQL): достаточно легко внедрить, актуальный поисковый индекс, полный контроль над настройкой и внешним видом, но, чаще всего очень низкая производительность на больших объемах данных, отсутствие учета морфологии, либо, в худшем случае, полное отсутствие подобных средств в СУБД;
  • использовать отдельную библиотеку/систему полнотекствого поиска.

Третий вариант кажется самым лучшим, ведь он сочетает достоинства двух других вариантов. Правда и здесь не обошлось без недостатков — библиотека требует установки, иногда даже запуска демона (например Sphinx), что может быть неприемлемо.

Решений существует масса, у каждого есть свои достоинства и недостатки. Я бы хотел подробнее остановиться на относительно малоизвестной библиотеке Xapian.
Читать дальше →

google translate script

Время на прочтение5 мин
Количество просмотров15K
Всем привет. Все что изложено ниже — мой первый реально полезный (во всяком случае для меня) опыт использования питона. Буду благодарен если подскажете как улучшить/оптимизировать скрипт.



С давних времен был у меня скриптик на баше которые переводил через гугл транслэйт все что ему кормишь
translate 'test' en ru

Мне захотелось чтоб он еще выдавал возможные альтернативы, как гугл недавно научился. Заодно решил устроить себе питон практику :)

Читать дальше →

Рисуем волну .wav-файла

Время на прочтение5 мин
Количество просмотров84K

Некоторое время назад я решил посвятить себя решению экзотической задачи — нарисовать волну wave-файла, как это делают аудио- и видеоредакторы, используя для этого Питон. В результате у меня получился небольшой скрипт, который вполне с этим справляется. Так, картинка выше сгенерирована им из песни «Under Pressure» группы Queen. Для сравнения — вид волны в аудиоредакторе:

Для разбора звука я использовал библиотеку numpy, а для построения графика — matplotlib. Под катом я изложу основы работы с wav-файлами и алгоритм скрипта.
Читать дальше →

Windows + Lighttpd + Python краткая инструкция по запуску

Время на прочтение2 мин
Количество просмотров14K
Под катом краткая инструкция по установке и настройке вышеуказанной связки. Через поиск не нашел, когда ставил для себя пришлось порыться по инету.

Читать дальше →

Python(x, y)

Время на прочтение9 мин
Количество просмотров54K
imagePython(x, y) — набор библиотек и программного обеспечения для численных расчетов, анализа и визуализации данных на основе Python. IDE представлены IDLE, Eclipse и Spyder, основой GUI избран Qt. Я расскажу вкратце о модулях, относящихся к самому Python, приведу несколько примеров их работы. Во время установки можно выбрать только то, что нужно, поэтому стоит разобраться что к этому нужному отнести. Кроме того, рассказ о модулях может пригодиться и сам по себе, поскольку их можно установить и по отдельности. Порядок следования модулей повторяет порядок оригинальной страницы и список чекбоксов установки.
Читать дальше →

Вклад авторов