В документации вашей функции или класса, вы можете добавить примеры кода, которые хотите протестировать. Примеры должны начинаться с ключевого слова >>> и заканчиваться ожидаемым результатом.
Чтобы запустить тесты
doctest, вы можете использовать функцию doctest.testmod(). Если тесты пройдут успешно, ничего не будет напечатано. Если тесты потерпят неудачу, будет напечатано сообщение об ошибке, указывающее на причину неудачи.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3👍2
Newspaper3k — это Python-библиотека для анализа и обработки новостного контента. Она была создана для упрощения работы с новостными сайтами и позволяет:
— Извлекать чистый текст статей.
— Определять ключевые слова и теги.
— Скачивать изображения из статей.
— Получать автора, дату публикации и другие метаданные.
— Работать с несколькими языками (включая русский).
— Автоматически генерировать краткие описания статей (summary).
Давайте посмотрим на базовый пример, как использовать Newspaper3k для парсинга новостной статьи:
from newspaper import Article
# URL статьи
url = "https://example.com/news-article"
# Создание объекта Article
article = Article(url)
# Скачивание и парсинг статьи
article.download()
article.parse()
# Вывод основных данных
print("Автор:", article.authors)
print("Дата публикации:", article.publish_date)
print("Текст статьи:\n", article.text)
print("Изображения:", article.top_image)
# Генерация краткого описания
article.nlp() # Анализ текста
print("Ключевые слова:", article.keywords)
print("Краткое описание:", article.summary)
1. Извлечение текста
Библиотека автоматически удаляет HTML-теги и广告, чтобы предоставить вам только чистый текст статьи.
2. Метаданные
Newspaper3k может извлекать такие данные, как автор, дата публикации, заголовок и URL.
3. Ключевые слова и теги
Используя метод
nlp(), вы можете получить список ключевых слов и тегов, которые характеризуют содержание статьи.4. Создание краткого описания
Метод
summary автоматически генерирует краткое описание статьи, что особенно полезно для создания новостных агрегаторов.5. Поддержка множества языков
Newspaper3k поддерживает различные языки, включая русский, английский, испанский и многие другие.
6. Работа с изображениями
Библиотека может скачивать главные изображения из статьи, что удобно для создания превью.
Если вам нужно собрать информацию с нескольких статей, можно использовать класс
newspaper.build():from newspaper import build
# URL сайта
url = "https://example.com"
# Создание объекта для парсинга всего сайта
paper = build(url, memoize_articles=False)
# Перебор всех статей
for article in paper.articles:
print(article.url)
Вы можете настроить библиотеку под свои нужды. Например, ограничить количество скачиваемых статей или задать таймаут:
paper = build(url, memoize_articles=False, request_timeout=10, number_threads=5)
1. Простота использования
Библиотека имеет понятный API и требует минимум усилий для начала работы.
2. Высокая производительность
Newspaper3k оптимизирован для быстрого парсинга больших объемов данных.
3. Гибкость
Возможность работать с различными источниками и языками делает её универсальным инструментом.
4. Активное сообщество
Проект поддерживается большим сообществом разработчиков, поэтому регулярно обновляется и исправляются ошибки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥1🤓1🗿1
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣20👍6👏3🔥2👌1
Что выдаст код выше❔
Anonymous Quiz
13%
Error
10%
False False
69%
True False
5%
True True
2%
False True
👍7🤓4❤2🤨1
Она, по сути, принимает какую-то строку, а возвращает результат сравнения этой строки с ее перевернутой версией. Переворот осуществляется при помощи среза [::-1].
Ну а далее, мы в принте делаем два вызова этой функции. Первый возвращает True, а второй - False.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥3🤔1
— Поддерживает скачивание видео, аудио, плейлистов, каналов и др с YouTube. Помимо этого работает с сотнями других сайтов — Vimeo, Facebook, ВКонтакте, TikTok и др. Позволяет скачивать контент практически отовсюду.
— Извлечение метаданных и обложек видео.
— Конвертация медиафайлов в другие форматы после скачивания.
— Поддержка прокси и лимитов скорости.
— Множество настроек для извлечения данных, именования файлов, пост-обработки и т.д.
— Удобная утилита командной строки и модуль Python для автоматизации.
import yt_dlp
# Опции для загрузки
ydl_opts = {
'format': 'bestvideo+bestaudio', # Выбор лучшего качества видео и аудио
'outtmpl': 'downloads/%(title)s.%(ext)s', # Путь сохранения
}
url = 'https://www.youtube.com/watch?v=VIDEO_ID' # Замените VIDEO_ID на ID нужного видео
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤5👍4
import time
# Определяем декоратор
def timer_decorator(func):
def wrapper():
start_time = time.time() # Засекаем время начала
func() # Вызываем оригинальную функцию
end_time = time.time() # Засекаем время окончания
print(f"Функция {func.__name__} выполнилась за {end_time - start_time:.4f} секунд")
return wrapper
# Применяем декоратор к функции
@timer_decorator
def my_function():
time.sleep(2) # Имитируем долгую операцию
print("Функция завершила работу")
# Вызываем функцию
my_function()
Функция завершила работу
Функция my_function выполнилась за 2.0012 секунд
— Логирование действий пользователя.
— Проверка авторизации перед выполнением функции.
— Кэширование результатов функции для ускорения работы.
— Чистота кода : Вы можете добавить общую логику (например, логирование, проверку прав доступа) без изменения основной функции.
— Повторное использование : Однажды написанный декоратор можно применять к разным функциям.
— Сокращение дублирования : Если одна и та же логика нужна в нескольких местах, декоратор поможет избежать копипасты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥2
Python предоставляет удобные инструменты для работы с CSV-файлами через стандартную библиотеку
csv.name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
import csv
# Открываем файл для чтения
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file) # Создаем читатель с заголовками
for row in reader:
print(f"Имя: {row['name']}, Возраст: {row['age']}, Город: {row['city']}")
Имя: Alice, Возраст: 30, Город: New York
Имя: Bob, Возраст: 25, Город: Los Angeles
Имя: Charlie, Возраст: 35, Город: Chicago
import csv
# Данные для записи
data = [
{'name': 'David', 'age': 28, 'city': 'Houston'},
{'name': 'Eva', 'age': 22, 'city': 'San Francisco'}
]
# Открываем файл для записи
with open('new_data.csv', mode='w', encoding='utf-8', newline='') as file:
fieldnames = ['name', 'age', 'city'] # Заголовки столбцов
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # Пишем заголовки
writer.writerows(data) # Пишем данные
new_data.csv со следующим содержимым:name,age,city
David,28,Houston
Eva,22,San Francisco
— Чтение CSV : Мы используем csv.DictReader, который преобразует строки файла в словари, где ключи — это заголовки столбцов.
— Запись CSV : Мы используем csv.DictWriter, который позволяет легко записывать данные в файл с указанием заголовков.
— Импорт/экспорт данных из базы данных.
— Анализ логов сервера.
— Обработка результатов опросов или анкет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🔥3
Регулярные выражения (или regex) — это язык для описания шаблонов текста. С их помощью можно выполнять сложные операции поиска, проверки и замены строк. В Python регулярные выражения реализованы через модуль re.
Допустим, у нас есть текст, и мы хотим найти все электронные адреса:
import re
# Исходный текст
text = """
Контакты:
email1@example.com
email2@example.org
Телефон: +7-900-123-45-67
"""
# Шаблон для поиска email-адресов
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
# Находим все совпадения
emails = re.findall(pattern, text)
print("Найденные email-адреса:", emails)
Найденные email-адреса: ['email1@example.com', 'email2@example.org']
Теперь давайте заменим все цифры в тексте на символ *:
# Исходный текст
text = "Цена товара: 123 рубля, количество: 5 штук"
# Шаблон для поиска цифр
pattern = r'\d+'
# Заменяем все цифры на '*'
result = re.sub(pattern, '*', text)
print("Измененный текст:", result)
Измененный текст: Цена товара: * рубля, количество: * штук
— Проверка корректности email-адресов или телефонных номеров.
— Анализ логов сервера для извлечения важной информации.
— Обработка текстовых документов для очистки данных.
Регулярные выражения — это мощный инструмент для работы с текстовыми данными. Хотя они могут показаться сложными на первый взгляд, практика поможет вам освоить их быстро.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10⚡4❤3🔥1
Python предоставляет удобные инструменты для работы с API через библиотеку
requests.import requests
# Ваш API-ключ (нужно зарегистрироваться на сайте OpenWeatherMap)
API_KEY = 'your_api_key_here'
# URL для запроса погоды
url = f"http://api.openweathermap.org/data/2.5/weather?q=London&appid={API_KEY}&units=metric"
# Отправляем GET-запрос
response = requests.get(url)
# Проверяем статус ответа
if response.status_code == 200:
data = response.json() # Преобразуем ответ в JSON
temperature = data['main']['temp']
description = data['weather'][0]['description']
print(f"Текущая температура в Лондоне: {temperature}°C")
print(f"Описание: {description}")
else:
print("Ошибка при получении данных:", response.status_code)
Текущая температура в Лондоне: 15°C
Описание: cloudy
— Интеграция с внешними сервисами : Вы можете получать актуальные данные из интернета (погода, новости, курсы валют).
— Автоматизация : Автоматизируйте рутинные задачи, такие как проверка почты или мониторинг сайтов.
— Создание приложений : Используйте API для создания сложных приложений, которые взаимодействуют с различными сервисами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🔥3
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# Настройка главного окна
self.setWindowTitle("Приветствие PyQt6")
self.setGeometry(100, 100, 300, 200)
# Создаем виджеты
self.label = QLabel("Нажмите кнопку!", self)
self.button = QPushButton("Приветствовать", self)
# Подключаем сигнал к слоту
self.button.clicked.connect(self.on_button_click)
# Размещаем виджеты в макете
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def on_button_click(self):
"""Обработчик нажатия кнопки"""
self.label.setText("Привет, PyQt6!")
# Запуск приложения
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
— Кроссплатформенность: Приложения на PyQt6 работают на Windows, macOS и Linux без изменения кода.
— Богатый набор виджетов: От простых кнопок до сложных элементов, таких как таблицы, графики и диалоговые окна.
— Профессиональный внешний вид: Интерфейсы, созданные с помощью PyQt6, выглядят современно и элегантно.
— Гибкость: Вы можете создавать как простые, так и сложные приложения с использованием различных возможностей библиотеки.
PyQt6 — это мощный инструмент для создания графических приложений в Python. Его можно легко изучить, начиная с простых примеров, таких как создание окон и кнопок, и постепенно переходить к более сложным проектам.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤7🔥3
sqlite3.import sqlite3
# Подключаемся к базе данных (или создаем новую)
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
# Создаем таблицу "books"
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
author TEXT NOT NULL,
year INTEGER
)
''')
# Добавляем книгу в таблицу
def add_book(title, author, year):
cursor.execute('INSERT INTO books (title, author, year) VALUES (?, ?, ?)', (title, author, year))
conn.commit()
print(f"Книга '{title}' добавлена.")
# Получаем все книги из таблицы
def get_all_books():
cursor.execute('SELECT * FROM books')
rows = cursor.fetchall()
for row in rows:
print(row)
# Удаляем книгу по ID
def delete_book(book_id):
cursor.execute('DELETE FROM books WHERE id = ?', (book_id,))
conn.commit()
print(f"Книга с ID {book_id} удалена.")
# Добавляем несколько книг
add_book("Война и мир", "Лев Толстой", 1869)
add_book("Преступление и наказание", "Фёдор Достоевский", 1866)
# Выводим все книги
print("Список всех книг:")
get_all_books()
# Удаляем одну книгу
delete_book(1)
# Выводим обновленный список книг
print("\nОбновленный список книг:")
get_all_books()
# Закрываем соединение
conn.close()
Книга 'Война и мир' добавлена.
Книга 'Преступление и наказание' добавлена.
Список всех книг:
(1, 'Война и мир', 'Лев Толстой', 1869)
(2, 'Преступление и наказание', 'Фёдор Достоевский', 1866)
Книга с ID 1 удалена.
Обновленный список книг:
(2, 'Преступление и наказание', 'Фёдор Достоевский', 1866)
Подключение к базе данных: Мы используем sqlite3.connect() для создания или открытия существующей базы данных.
Создание таблиц: SQL-команда CREATE TABLE используется для определения структуры данных.
Добавление данных: Метод execute() выполняет SQL-запросы, а commit() сохраняет изменения.
Чтение данных: Команда SELECT позволяет получить данные из таблицы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥2
👍4🤔3❤1🤨1
Перед этим выражением есть not, который превратит True в False
Перед not'ом есть еще not —> превратит назад в True
Еще not —> False
еще not —> True
Получится в конце if True —> условие выполняется.
Выдаст: 1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🤓8👍3👏1
В этом посте мы рассмотрим, что такое Jython, как он работает, и почему он
Jython — это диалект Python, созданный для работы на виртуальной машине Java (Java Virtual Machine, JVM). Он позволяет писать код на Python, который может взаимодействовать с библиотеками Java, а также запускаться в средах, поддерживающих Java.
— Совместимость с Python: Jython поддерживает большую часть стандартной библиотеки Python.
— Интеграция с Java: Вы можете использовать Java-классы и библиотеки напрямую из вашего Python-кода.
— Кроссплатформенность: Поскольку Jython работает на JVM, он доступен на любой платформе, где есть Java.
Jython полезен в следующих случаях:
1. Интеграция с Java-приложениями
Если вы работаете в экосистеме Java, но предпочитаете писать код на Python, Jython позволяет вам легко интегрировать Python-скрипты в существующие Java-проекты.
2. Быстрая разработка
Python известен своей простотой и производительностью при разработке. С помощью Jython вы можете использовать эту быстроту внутри Java-среды.
3. Доступ к Java-библиотекам
Jython предоставляет прямой доступ ко всем библиотекам Java, что делает его идеальным выбором для проектов, где нужны специфические Java-инструменты.
4. Кроссплатформенность
Поскольку Jython работает на JVM, ваши Python-программы могут запускаться на любом устройстве, поддерживающем Java.
Установка Jython немного отличается от обычного Python. Вам нужно скачать дистрибутив с официального сайта и установить его вручную. Вот основные шаги:
1. Перейдите на официальный сайт Jython - https://www.jython.org/
2. Скачайте последнюю версию Jython.
3. Установите Jython, следуя инструкциям на сайте.
4. Добавьте путь к Jython в переменную окружения
PATH.После установки вы можете запустить интерактивную оболочку Jython командой:
jython
Давайте посмотрим на простой пример, демонстрирующий, как можно использовать Java-классы в Python с помощью Jython:
# Импорт класса из Java
from java.util import ArrayList
# Создание объекта ArrayList
list = ArrayList()
# Добавление элементов
list.add("Python")
list.add("Jython")
list.add("Java")
# Вывод списка
for item in list:
print(item)
Python
Jython
Java
Как видите, работа с Java-классами в Jython практически не отличается от работы с нативными Python-объектами.
1. Совместимость с Java
Jython позволяет использовать все возможности Java, включая многопоточность, GUI-библиотеки (например, Swing) и другие инструменты.
2. Быстрая разработка
Python — это высокоуровневый язык, который позволяет писать код быстрее, чем на Java. Jython сохраняет эту скорость разработки.
3. Обширная экосистема
Вы можете использовать как Python-библиотеки, так и Java-библиотеки, что значительно расширяет возможности вашего проекта.
4. Простота интеграции
Jython легко интегрируется с существующими Java-проектами, позволяя добавлять Python-функциональность без серьёзных изменений.
Несмотря на свои преимущества, Jython имеет некоторые ограничения:
1. Поддержка Python 2.x
На момент написания статьи Jython поддерживает только Python 2.7, хотя активно ведётся работа над поддержкой Python 3.x.
2. Ограниченная совместимость со сторонними библиотеками
Некоторые Python-библиотеки, зависящие от C-расширений, могут не работать в Jython.
3. Производительность
Хотя Jython может быть быстрее, чем стандартный Python, в некоторых случаях производительность зависит от JVM.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥3
— Имеет множество специализированных библиотек для работы со звуком.
— Позволяет легко создавать алгоритмы для генерации мелодий.
— Может работать с MIDI-устройствами, аудиофайлами и даже нейросетями для создания уникальной музыки.
1. MIDIUtil
MIDI (Musical Instrument Digital Interface) — это стандартный формат для записи музыкальных данных. Библиотека
MIDIUtil позволяет создавать MIDI-файлы прямо из Python-кода.Пример использования:
from midiutil import MIDIFile
# Создание объекта MIDI
degrees = [60, 62, 64, 65, 67, 69, 71, 72] # Ноты C-major scale
track = 0
channel = 0
time = 0
duration = 1 # Длительность ноты
volume = 100 # Громкость
midi_file = MIDIFile(1)
midi_file.addTrackName(track, time, "Sample Track")
midi_file.addTempo(track, time, 120)
# Добавление нот
for i, pitch in enumerate(degrees):
midi_file.addNote(track, channel, pitch, time + i, duration, volume)
# Сохранение файла
with open("output.mid", "wb") as output_file:
midi_file.writeFile(output_file)
output.mid, содержащий простую мелодию в масштабе C-major.2. PyDub
PyDub — это библиотека для работы с аудиофайлами. Она позволяет редактировать, склеивать и преобразовывать звуковые файлы. Хотя она больше предназначена для обработки готовых аудиозаписей, её можно использовать для создания собственных композиций.Пример использования:
from pydub import AudioSegment
from pydub.generators import Sine
# Создание звука синусоидальной волны
tone1 = Sine(440).to_audio_segment(duration=1000) # А4 (440 Гц)
tone2 = Sine(523).to_audio_segment(duration=1000) # С5 (523 Гц)
# Объединение тонов
composition = tone1 + tone2
# Экспорт в WAV-файл
composition.export("composition.wav", format="wav")
3. Music21
Music21 — это мощная библиотека для анализа, создания и понимания музыки. Она позволяет работать с нотами, аккордами, ритмами и даже анализировать существующие произведения.Пример использования:
from music21 import *
# Создание простой мелодии
notes = "C4 D4 E4 F4 G4 A4 B4 C5"
melody = converter.parse(notes)
# Добавление текста к нотам
for note in melody.flat.notes:
note.addLyric(str(note.pitch))
# Прослушивание мелодии
melody.show('midi')
Генерация музыки с помощью Python — это увлекательное направление, которое сочетает в себе технологии и искусство.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤6🔥4
1. Оптимизация UX/UI: Понимание того, как пользователи используют ваш продукт, позволяет улучшить его интерфейс, сделать его более интуитивным и удобным.
2. Увеличение конверсии: Анализируя данные о том, где пользователи сталкиваются с трудностями или теряют интерес, можно найти точки роста и повысить конверсию.
3. Лояльность пользователей: Изучение предпочтений и привычек пользователей помогает создавать персонализированный опыт, что увеличивает их удовлетворенность и лояльность.
Python предлагает широкий спектр библиотек и инструментов для сбора, анализа и визуализации данных о поведении пользователей. Вот основные этапы этого процесса:
Первый шаг — собрать данные о действиях пользователей. Это может включать:
- Клик-стриминг (запись кликов и движений мыши).
- Время на странице/экране.
- Маршруты навигации.
- Взаимодействие с элементами интерфейса.
Python-библиотеки, такие как
Flask или Django, могут использоваться для создания API, которые собирают эти данные и передают их в базу данных.После сбора данных их нужно очистить, преобразовать и подготовить к анализу. Для этого часто используются следующие инструменты:
- Pandas: Библиотека для работы с табличными данными. Позволяет фильтровать, группировать и агрегировать информацию.
- NumPy: Библиотека для численных вычислений. Используется для сложных математических операций.
Пример использования Pandas:
import pandas as pd
# Загрузка данных о пользователях
data = pd.read_csv('user_behavior.csv')
# Фильтрация данных по конкретному событию
click_data = data[data['event'] == 'click']
# Группировка по пользователям
user_activity = click_data.groupby('user_id').size()
На этом этапе данные анализируются для выявления закономерностей и трендов. Python предоставляет множество инструментов для этого:
- Scikit-learn: Библиотека для машинного обучения. Может использоваться для классификации пользователей, прогнозирования действий и построения рекомендательных систем.
- Statsmodels: Библиотека для статистического анализа. Подходит для тестирования гипотез и оценки значимости различий между группами пользователей.
Пример использования Scikit-learn:
from sklearn.cluster import KMeans
# Кластеризация пользователей на основе их активности
kmeans = KMeans(n_clusters=3)
user_clusters = kmeans.fit_predict(user_activity.values.reshape(-1, 1))
Чтобы лучше понять результаты анализа, важно визуализировать данные. Python предлагает несколько популярных библиотек для этого:
- Matplotlib: Основная библиотека для создания графиков.
- Seaborn: Надстройка над Matplotlib, позволяющая создавать более сложные и красивые визуализации.
- Plotly: Интерактивная библиотека для создания дашбордов и графиков.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥3