Python community developers
1.38K subscribers
367 photos
45 videos
6 files
241 links
Сообщество программистов на языке Python🙂
🔥Разбор вопросов и задач с собеседований
🔥Обзор популярных библиотек и фишек языка
🔥Интересные идеи программ

Сотрудничество - @BorryaD

@Python_community_developers_bot
加入频道
Получаем текст с картинки

У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов.

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

Для того, чтобы получить текст с картинки, нужно вызвать метод image_to_string. Если вас интересует текст на русском, то следует указать аургмент lang как 'rus'.

Еще важно, что для открытия картинок рекомендуется использовать pillow, хоть и имеется возможность просто указать путь к файлу в виде строки.

#pytesseract
Нижнее подчеркивание

В Python имя переменной может состоять из одного подчеркивания. Хотя такое имя не достаточно описательно и не должно использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.

Первое, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны — например, в циклах for.

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

Третье, документация модуля gettext рекомендует псевдоним _() для функции gettext(), чтобы минимизировать загромождение вашего кода.

#тонкости
Скачиваем вебсайты целиком

Максимально простой, но при этом мощный пакет pywebcopy поможет вам клонировать отдельные веб-страницы или даже целые сайты.

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

А вот save_website дает возможность скачать целый вебсайт рекурсивно. Например, если сайт представляет из себя блог, то скрипт скачет все статьи, которые есть на сайте.

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

#pywebcopy
Работаем с атрибутами объектов

Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции: getattr, setattr, delattr и hasattr.

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

Во всех функциях первыми двумя аргументами идут объект и название атрибута в виде строки. В setattr также нужно передать новое значение для атрибута.

На практике использование подобного — довольно редкий случай, но иногда может сильно выручить, так что берите на вооружение.

#классы #атрибуты
Выделение базовой части слов

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

Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.

В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.

Один за пакетов, snowball, использует алгоритм соответственно Snowball, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков. Подробнее об алгоритме можно почитать тут.

#snowball
Делаем планировщик задач 

К моему удивлению, далеко не все знают про пакет schedule, который позволяет планировать задачи и повторять их через промежуток времени. 

Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще schedule не требует внешних зависимостей и сам в целом легковесный. 

Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах. 

#schedule
🔥 Полезные библиотеки Python

AniPortrait — Python инструмент для создания высококачественной анимации на основе звука и портретного изображения.

📂 GitHub/Инструкция

#python #soft #github
🔥 Полезные библиотеки Python

PrivatePing
— защищённое приложение для переписки, разработанное на базе Python Django.

Пользователям доступна функция регистрации, безопасного доступа к своему аккаунту и обмена зашифрованными сообщениями.

PrivatePing гарантирует сквозное шифрование, анонимность при входе в систему и надёжную аутентификацию.

📂 GitHub/Инструкция

Пробуем тут

#python #soft #github
Размер в байтах

Этот пример возвращает длину строки в байтах, что удобно, когда вам нужно знать размер строковой переменной.
Query JSON

JMESpath – это язык запросов для JSON, который позволяет получать необходимые данные из документа или словаря JSON. Библиотека доступна как для Python, так и для других ЯП, что расширяет ее возможности.

#библиотеки
🔥 Полезные библиотеки Python

LeakSearch — простой в использовании, удобный инструмент для поиска утекших в сеть паролей по базам(ProxyNova, LocalFile).

Поддерживаем поиск по ключевым словам, домены, пользователи и т.д., экспорт файлов в JSON или TXT.

Установка:
$ git clone https://github.com/JoelGMSec/LeakSearch

$ cd LeakSearch

$ pip install -r requirements.txt


Использование:
$ python LeakSearch.py


⚙️ GitHub/Инструкция

#python #soft #github
Функция shorten()

Функция shorten() модуля textwrap усекает заданный текст, чтобы он поместился в заданную ширину width.

Сначала все пробелы заменяются одиночными пробелами. Если результат соответствует ширине, он возвращается. В противном случае с конца отбрасывается слова, чтобы оставшийся текст плюс заполнитель placeholder (по умолчанию [...]) поместились в указанную ширину width.
Открытие веб-страницы

Выше приведен простой рецепт открытия веб-страниц из вашего терминала Python или кода.
🔥 Полезные библиотеки Python

Requests-HTML
— максимально простая и интуитивно понятная библиотека для парсинга html включая асинхронный парсинг.

Установка:
$ pip install requests-html

Пример использования:

1️⃣
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://python.org/')


2️⃣
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
async def get_pythonorg():
r = await asession.get('https://python.org/')
return r

async def get_reddit():
r = await asession.get('https://reddit.com/')
return r

async def get_google():
r = await asession.get('https://google.com/')
return r

results = asession.run(get_pythonorg, get_reddit, get_google)
results # check the requests all returned a 200 (success) code
[<Response [200]>, <Response [200]>, <Response [200]>]

for result in results:
print(result.html.url)


Из коробки поддерживает сохранение cookie файлов, имитирует user-agent, асинхронные запросы, JavaScript и д.р. плюшки.

⚙️ GitHub/Инструкция

#python #github #soft
🔥 Изучаем Tkinter. Руководство на русском

Tkinter
— кросс-платформенная Python библиотека для создания приложений с графическим интерфейсом пользователя.

#doc #python #russain
🔥 Полезные библиотеки Python

MusicBot
— интересный проект музыкального бота для Discord. Воспроизводит запрошенные песни с YouTube и других сервисов на сервере или нескольких серверах Discord. Кроме того, если очередь становится пустой, MusicBot проиграет список существующих песен с конфига.

Бот также позволяет конфигурировать права доступа для назначения ограничений различным пользователям.

⚙️GitHub/Инструкция

#python
Time it

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

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

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