Как стать автором
Обновить
545.36

Python *

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

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

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

Если вам нужно извлечь число из текста, используйте функцию extract_number с помощью библиотеки re:

import re

def extract_number(text):
    match = re.search(r'\b(\d+)\b', text)
    if match:
        return int(match.group(1))
    else:
        return None

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

# Пример 1:
input_text = "Возраст: 30 лет"
number = extract_number(input_text)
print(number)  # Выведет: 30

# Пример 2:
input_text = "Тебе 25?"
number = extract_number(input_text)
print(number)  # Выведет: 25

# Пример 3:
input_text = "Я не знаю сколько ему лет"
number = extract_number(input_text)
print(number)  # Выведет: None (так как число не найдено)

Если было полезно - добавляйте в закладки и ставьте лайки.

Теги:
Всего голосов 6: ↑5 и ↓1+7
Комментарии5

Группировка списка словарей по ключу с помощью Python

Решил поделиться с вами простым, но мощным решением, которое пригодится вам, если вам когда-либо потребуется преобразовать список словарей в один большой словарь с группировкой по одному общему ключу.

Давайте напишем код:

from collections import defaultdict
from datetime import date
from typing import List, Dict, Any


def group_dicts_by_key(data_list_dict: List[Dict[str, Any]], key_group: str) -> dict:
    """
    Функция для группировки списка словарей по указанному ключу.

    Args:
    data_list_dict (list): Исходный список словарей.
    key_group (str): Ключ для группировки.

    Returns:
    dict: Словарь со сгрупированными значениями.
    """
    grouped_dict = defaultdict(list)

    for item in data_list_dict:
        order = item[key_group]
        grouped_dict[order].append(item)

    return dict(grouped_dict)

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

if __name__ == "__main__":
    data = [
        {'art': '123das', 'order_number_1': 472931549},
        {'art': 'dasdw', 'order_number_1': 474286313},
        {'art': 'cxzcz', 'order_number_1': 474269428},
        {'art': 'wezsa', 'order_number_1': 474286312},
        {'art': 'fasqw', 'order_number_1': 474286313}
    ]

    result_dict = group_dicts_by_key(data, 'order_number_1')
    print(result_dict)

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

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии3

asyncpg-lite обновлена до версии 0.2.2.1!

В новой версии:

  • Убран флаг dsn_flag (теперь достаточно не передавать данные в параметр dns и состояние этого флага будет автоматически сброшено на dsn_flag = False)

  • Параметр deletion_password теперь обязательный (это сделано для безопасного выполнения критических операций - используйте надежный пароль)

  • Добавлен флаг debug: bool во все методы (по умолчанию его значение False)

  • Исрпавлены ошибки и улучшены логи (теперь там больше полезной информации)

Зачем нужен флаг debug?

Установив этот флаг в методе вы сможете вывести в консоль дополнительную информацию, такую как параметры запроса и сам SQL-запрос.

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

С библиотекой вы сможете ознакомиться тут: asynpg-lite: Простой асинхронный менеджер для PostgreSQL на Python

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

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

В США разработчикам в экспериментальных целях платят, чтобы они программировали в режиме изменённого сознания (фактически накуренными). В Университете Мичигана проводят исследование «Накуренный во время программирования».

В рамках этого мероприятия планируется изучить влияние определенных веществ на продуктивность. За это платят $80. Для участия надо быть старше 21 года и знать Python.

Ранее исследование показало, что 59% респондентов уже кодили на работе под кайфом или в состоянии алкогольного опьянения.

Теги:
Всего голосов 2: ↑2 и ↓0+6
Комментарии1

Задача о связных списках для начинающих Python-разработчиков ?‍?

Дима — начинающий Python-разработчик. Он совсем недавно устроился в новую компанию и теперь пишет программу для анализа данных.

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

Задача

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

Делитесь в комментариях своими ответами! А мы в Академии Selectel показываем два решения и сравниваем сложность каждого способа.

Теги:
Всего голосов 28: ↑28 и ↓0+31
Комментарии1
Спасибо за подсказку, pre-commit
Спасибо за подсказку, pre-commit

Привет, я Иван Елфимов, Developer Advocate в Островке. Расскажу про самые полезные open source решения, которые использую я сам и Команда партнерских интеграций.

  • Вообще, трудно назвать не open source решение, которое бы использовал Островок в своей разработке. Используем большей частью опенсорс с подходящими лицензиями.

  • Один из самых малоизвестных и узкопрофильных компонентов, который мы используем: django-chronograph. Это приложение, позволяющее запускать management-команды из админки. Эта библиотека давно не поддерживается, поэтому мы форкнули её к себе доработали. Возможно когда-нибудь выложим в Open Source.

  • Компания Astral создает (точнее пересоздает) отдельные инструменты для питона на языке Rust, заставляя их работать в разы быстрее. Мы уже начали пользоваться и ruff и uv.

  • Личная рекомендация от меня: pre-commit. Инструмент очень мощный и полезный, хотя даже там встречается юмор от разработчиков. К примеру, скрипт проверки кода на случайно оставленный print называется «oops, I print it again!»

  • Островок готовит к выпуску свой техрадар. Пока он работает в закрытом режиме только для сотрудников, но в планах вынести его наружу. В техрадаре будет информация о библиотеках, прошедших через тесты команды Островка. Они будут сгруппированы по направлениям (frontend, backend, ios/android, аналитика, QA, devops) и каждая из библиотек будет иметь свою стадию: adopt, trial, assess и hold.

Теги:
Всего голосов 20: ↑11 и ↓9+2
Комментарии5

Привет, я Иван Елфимов, Developer Advocate в Ostrovok.ru. Расскажу про наш переход на Django 5.0.

4 марта вышел третий security release, когда мы обычно переходим на новые версии библиотек. Мы были готовы к переходу: проверили на декабрьском 5.0.0. что могло сломаться. Из-за некоторых обновлений нам пришлось менять код:

  • Раньше мы использовали nulls_last=False. Теперь nulls_first и nulls_last могут быть True или None, поэтому в некоторых местах вместо значений по умолчанию теперь nulls_last = None:

  - nulls_last = False
  + nulls_last = None
    if ordering_by == OrderingField.FIELD_START_AT:
        nulls_last = True
  • В сигналах появился новый тип асинхронных ресиверов  (async_receivers), мы добавили его во вспомогательный класс SignalBlocker, которым временно выключаем сигналы.

  • Теперь надо явно указывать USE_TZ = False, но это не проблема, мы не используем таймзоны в нашем сервисе.

  • Если после refresh_from_db надо дальше по коду использовать закешированные значения из базы данных, появился такой хак:

my_model_obj._meta.private_fields = []
my_model_obj.refresh_from_db()

Новинка, которой воспользуемся в будущем, — расчетные поля по умолчанию (default) в БД. Есть сценарии, где нужно, чтобы поле по умолчанию было не скаляром, а содержало расчётное значение на основе других полей.

Теги:
Всего голосов 16: ↑14 и ↓2+12
Комментарии6

Питонисты! В 19:00 начинаем транслировать Selectel Python Meetup.

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

Смотрите трансляцию прямо в этом посте или переходите на YouTube.

Теги:
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

ЭФФЕКТ ДОПЛЕРА против БРЮСА ЛИ - для теста нужен лишь Андроид

Этот пост - предвварительная проверка идеи или концепта и, может быть, НИОКР и/или попытка предварительного анализа востребованности, реакции читателей Хабра.

Концепт приложения для "диванных" каратистов - измерение скорости удара

Навеяно старым приложением (сейчас не могу его найти в google play) от известного бойца ММА. Старое видео на youtube >> Quinton "Rampage" Jackson demos his new app Rampage Punch

Приложение Джексона использовало интегрирование показаний акселерометра. Это проблемы с низкой частотой сэмплирования (не все хорошо по Найквисту-Котельникову), ограниченным динамическим диапазоном, калибровкой и дрейфом.

Существуют игровые автоматы для измерения силы удара. Но с ними есть проблема.

Известный боец смешанных единоборств Конор Макгрегор рассмешил фанатов своим ударом по силомеру. Об этом сообщило издание Tengri Sport. Ирландская звезда ММА решил показать сокрушительную мощь удара, но выбил лишь 1 очко из 999 возможных. >> Видео - лучшая анти-реклама измерителя силы удара

Я попробовал сделать >> ВИДЕО прототип измерителя скорости удара на основе эффекта Доплера, particle FFT на python и/или готовых "кубиков" (других приложений)

Ничего не продается и не рекламируется. В законченном виде его не существует. Нигде ничего скачать нельзя.
Ничего не продается и не рекламируется. В законченном виде его не существует. Нигде ничего скачать нельзя.

Теги:
Всего голосов 6: ↑4 и ↓2+2
Комментарии7

28 марта в 19:00 мы проведем Selectel Python Meetup для разработчиков, техлидов и тимлидов разработки. Соберем экспертов из Selectel, Банка Точка и Yandex.Cloud. Обсудим «еще один» быстрый фреймворк, плюсы и минусы чистой архитектуры, опыт перехода с Python на Go.

Темы докладов:

  • «Черная овечка на фоне FastAPI»,

  • «Слоистая архитектура в Python-приложениях: гибкость кода vs оптимизация»,

  • «Перешел с Python на Go. Лучше стало?».

Регистрируйтесь на митап — будем ждать вас в онлайн-трансляции или в офисе Selectel.

Регистрация →

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

OpenAI блокирует доступ к своим продуктам на территории РФ. В какой-то момент стало невозможным открыть даже документацию.

Доступ через VPN пока работает, но мы с друзьями подумали, что это неудобно, и опубликовали документацию OpenAI у себя:

https://openai-docs.ru

Более того, с помощью GPT-4 мы перевели содержание на русский язык и где возможно, заменили ссылки на дополнительные статьи (Wikipedia и подобные) на русскоязычные версии. За бесплатный доступ к GPT-4 для нашего проекта благодарим  ProxyAPI — доступ к OpenAI API в России

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

Теги:
Всего голосов 11: ↑11 и ↓0+11
Комментарии5

Обработка исключений в Python: только новое исключение

def divide(x=1, y=0):
    try:
        return x / y
    except ZeroDivisionError:
        raise ValueError("Pattern 3 error.") from None
divide()

Отличие от простого вызова нового исключения, использование from None подавляет исходное исключение ZeroDivisionError. В данном случае трассировка не будет включать исходную ошибку ZeroDivisionError, а только исключение ValueError и сообщение об ошибке. Это полезно, когда вы хотите скрыть от пользователя детали исходного исключения или внутреннее исключение используемой библиотеки:

try:
  # библиотека, в которой могут быть внутренние исключения
    result = library_function(data) 
except InternalException as e:
    raise ExternalException("An error has occurred") from None

В данном примере мы дополнительно ловим внутреннее исключения библиотеки library_function, но вызываем только ExternalException. Это может пригодиться, когда пользователям не нужно понимать или обрабатывать внутренние исключения этой библиотеки.

Частичный перевод этой статьи из блога jerrynsh.com

Теги:
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

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

Обработка исключений в Python: новое исключение

def divide(x=1, y=0):
    try:
        return x / y # первый вызов исключения
    except ZeroDivisionError:
        raise ValueError("Pattern 2 error.") # повторный вызов, новое исключение

divide()

В этом примере вызывается новое исключение с сообщением, при этом сохраняется трассировка исходного исключения. Если возникает ошибка ZeroDivisionError, поднимается новая ошибка ValueError с пользовательским сообщением.

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

Частичный перевод этой статьи из блога jerrynsh.com

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Как передать 'enableVNC': True для selenoid при вызове webdriver.Remote на Python Selenium 4 и выше

На Selenium до 4 версии у webdriver.Remote был параметр desired_capabilities, который принимал словарь с настройками браузера для удалённого вызова.

Но начиная с версии 4 этот параметр устарел и перестал поддерживаться, вместо него теперь - options. И в них можно встроенными методами класса передать название браузера или его версию, но вот 'enableVNC': True потерялся.

Selenoid стал хитро поддерживать его на своей стороне через передачу разных параметров в словарике с ключом 'selenoid:options'. В нём можно передать и разрешение браузера по необходимости.

А теперь, собственно, сабж

from selenium import webdriver

webdriver.DesiredCapabilities.CHROME['selenoid:options'] = {'enableVNC': True}
options = webdriver.ChromeOptions()
driver = webdriver.Remote(command_executor=remote_server, options=options)

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Полезные библиотеки Python список из более 100 мини - проектов⁠⁠

Всем привет! Хочу поделиться интересным сборником проектов от уровня "Hello World" до создания ботов WhatsApp.

Python-Mini-Projects — большой сборник(более 100) мини проектов на Python, подойдет как новичкам так и программистам с опытом.

На основе мини проектов можно делать свои более серьезные проекты или дорабатывать код))

Список всех мини программ сборника - клик

Сcылка на GitHub - клик

(Кстати если вы интересуетесь Python и хотите узнать больше об этом языке программирования, то приглашаю вас подписаться на мой канал! https://t.me/python_scrypt полезные материалы, уроки и новости из мира программирования)

Теги:
Всего голосов 10: ↑5 и ↓50
Комментарии0

Как улучшить читаемость и информативность трассировки кода?

Используйте осмысленные имена переменных и функций: Понятные имена облегчают понимание назначения вашего кода. Это поможет определить причину исключения при чтении трассировки.

Разбивайте сложные функции: Если функция слишком большая и выполняет по факту несколько действий, то отследить ход её выполнения будет сложнее. Разделение функции на несколько даст возможность более точно обрабатывать и анализировать исключения.

Добавляйте комментарии, используйте docstring: Документируйте свой код с помощью комментариев и описания функции, чтобы обеспечить дополнительный контекст.

Обрабатывайте исключения на соответствующих уровнях: Отлавливайте исключения ближе к источнику ошибки — это сделает вывод более информативным с точным указанием места вызова исключения.

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

Используйте логирование: Модуль logging позволяет дополнять и форматировать информацию об исключениях в более структурированном и настраиваемом виде:

try:
    unknown_method()
except Exception as e:
    logging.error("Error occurred", exc_info=True)

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

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Проект Эйлера: Когда тривиальные задачи с CodeWars надоели и хочется настоящих головоломок⁠⁠

Привет друзья! Если вы не любитель математики или вам неинтересно разбираться в дебрях формул то пропускайте эту статью) если же вам нечем занять свое время нравятся нестандартные задачи, то велком к прочтению!

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

Ссылка на русскоязычный сайт - тык

Создатели проекта  ProjectEuler (оригинал на английском), на котором можно найти все задачи и ответы к ним. Все задачи в Проекте Эйлера разделены на уровни сложности. Начинающим участникам предлагаются задачи начального уровня, для решения которых достаточно знаний арифметики. Продвинутые участники могут попробовать свои силы в решении задач продвинутого уровня, требующих глубоких знаний в области теории чисел, комбинаторики и других разделах математики.

Если вы интересуетесь Python и хотите узнать больше об этом языке программирования, то приглашаю вас подписаться на мой канал! https://t.me/python_scrypt. Полезные материалы, уроки и новости из мира программирования

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Как IT-директору выбрать подрядчика для усиления команды бэкенд-разработки: практический вебинар

Новость для руководителей IT-отделов, техлидов и продукт-оунеров.

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

С чего начать поиск подрядчика? Как подготовиться к выводу на проект внешнего разработчика? Как сформулировать требования к программисту и проверить удаленную команду на благонадежность — на эти и другие вопросы ответят руководители компании Programming Store на бесплатном онлайн-вебинаре.

6 февраля, 16:00 МСК

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

Зарегистрироваться

Длительность — 1 час.

  • 5 критериев готовности команды к работе с внешними разработчиками

  • Как оценить благонадежность подрядчика

  • Кейсы из практики: ритейл, производство, медицина

Спикер — Роман Огородников, руководитель проектов по backend-разработке в Programming Store.

Также вы сможете задать вопросы и получить ответы напрямую от директора компании и руководителя backend-направления Алексея Петухова.

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

Programming Store — центр удаленной разработки на платформах 1С, Python, Java, MS Dynamics 365. Уже 10 лет мы работаем по всей России и за рубежом с компаниями- внедренцами и крупными клиентами

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

Лучшие бесплатные курсы по Python за прохождение которых вам дадут сертификат⁠⁠. Часть:2

Продолжение первого поста

Инди‑курс программирования на Python — курс представляет собой серию последовательных видеоуроков, где подробно и простым языком объясняется информация. После каждого урока Вас ждут практические задания, чтобы закрепить материал. Оценка: 4.9/5

Добрый, добрый Python — этот курс позволит вам изучить основы программирования на языке Python, начиная с самых азов и заканчивая довольно серьезными конструкциями. После каждого теоретического видеоурока вы найдете практические задания на закрепление пройденного материала. Курс рассчитан и на самых начинающих и для тех, кто уже знаком с Python, но хотел бы повысить, а заодно и проверить, свой уровень. Оценка: 4.9/5

Python в примерах и задачах — в курсе реализуется проблемно‑ориентированное обучение, когда минимальные теоретические аспекты программирования на Python предлагаются слушателю, только если этого потребует решаемая задача. Кроме того, в научно‑популярной форме объясняется физическая, математическая или экономическая суть каждой задачи. Оценка: 4.8/5

Python: основы и применение — курс посвящен базовым принципам языка Python и программирования в целом. Он хорошо подойдет тем, кто уже может писать простейшие программы на Python или тем, кто до этого программировал на других языках. Оценка: 4.7/5

Программирование на Python — курс посвящен базовым понятиям и элементам языка программирования Python

Всем удачи в разработке!

Теги:
Рейтинг0
Комментарии1