Майские лучшее время начать курс с преподавателями Профессия Python-разработчик.
Реклама. Информация о рекламодателе по ссылкам в посте.
Реклама. Информация о рекламодателе по ссылкам в посте.
🐍 Магия дескрипторов в Python: кастомные валидаторы полей
Если ты когда-нибудь валидировал поля в классе, то, возможно, делал это вручную в
Создадим дескриптор, который будет валидировать возраст:
Теперь можно использовать его в классе:
✅ Работает:
🚫 Не работает:
📌 Что происходит:
-
- При установке значения вызывается
- Это даёт гибкий контроль: можно валидировать, логировать, кэшировать и т.д.
Подпишись 👉🏻 @KodduuPython 🤖
Если ты когда-нибудь валидировал поля в классе, то, возможно, делал это вручную в
__init__. Но Python даёт куда более мощный механизм — дескрипторы.Создадим дескриптор, который будет валидировать возраст:
class PositiveInteger:
def __init__(self, name):
self.name = name
def __get__(self, instance, owner):
return instance.__dict__[self.name]
def __set__(self, instance, value):
if not isinstance(value, int):
raise TypeError(f"{self.name} must be an integer")
if value < 0:
raise ValueError(f"{self.name} must be >= 0")
instance.__dict__[self.name] = value
Теперь можно использовать его в классе:
class User:
age = PositiveInteger("age")
def __init__(self, name, age):
self.name = name
self.age = age
✅ Работает:
u = User("Alice", 30)
print(u.age) # 30
🚫 Не работает:
u = User("Bob", -5) # ValueError
u = User("Charlie", "12") # TypeError
📌 Что происходит:
-
User.age — это не обычное поле, а объект-дескриптор.- При установке значения вызывается
__set__.- Это даёт гибкий контроль: можно валидировать, логировать, кэшировать и т.д.
Подпишись 👉🏻 @KodduuPython 🤖
👍2
Forwarded from AIGENTTO
Попробовал генерацию видео аватаров. С помощью Python библиотек SadTalker, Wav2Lip, и еще одной магической библиотеки.
Попробуйте определить где живой человек, а где генерация❔
Генерация на локальном MacBook M3, минут 20 занимает за 8 секунд видео. В облаке на GPU в сотни раз быстрее.
Очень увлекательно, но теперь думаю - а как это применить в бизнесе? С RAG, ИИ-агентами применение понятно, а тут? 🤔
Подпишись 👉🏻 @aigentto 🤖
Попробуйте определить где живой человек, а где генерация❔
Генерация на локальном MacBook M3, минут 20 занимает за 8 секунд видео. В облаке на GPU в сотни раз быстрее.
Очень увлекательно, но теперь думаю - а как это применить в бизнесе? С RAG, ИИ-агентами применение понятно, а тут? 🤔
Подпишись 👉🏻 @aigentto 🤖
Вот простой скрипт на Python, который удаляет скрытые/невидимые символы (включая неразрывные пробелы и прочие ватермарки в виде специальных символов Unicode) из текстов, сгенерированных ИИ:
### Что делает скрипт:
* Удаляет все основные невидимые символы (часто используемые как watermark).
* Можно расширить список
Для чего это нужно читайте здесь 👈👈👈
Подпишись 👉🏻 @aigentto 🤖
import re
import unicodedata
# Список подозрительных символов, часто используемых как "водяные знаки"
# Включает неразрывный пробел, zero width space, и другие невидимые символы
WATERMARK_CHARS = [
'\u00A0', # Неразрывный пробел (non-breaking space)
'\u200B', # Zero width space
'\u200C', # Zero width non-joiner
'\u200D', # Zero width joiner
'\u2060', # Word joiner
'\uFEFF', # Zero width no-break space (BOM)
]
def clean_ai_watermarks(text: str) -> str:
# Удаляем все подозрительные символы
for char in WATERMARK_CHARS:
text = text.replace(char, '')
# Дополнительно можно убрать все невидимые символы из категорий Cf, Cc
text = ''.join(
ch for ch in text if unicodedata.category(ch) not in ('Cf', 'Cc')
)
# Или можно воспользоваться регуляркой:
# text = re.sub(r'[\u200B\u200C\u200D\u2060\uFEFF\u00A0]', '', text)
return text
# Пример использования
if __name__ == "__main__":
original = "Это\u00A0пример\u200Bтекста\u2060с\uFEFFневидимыми\u200Dсимволами."
print("До очистки:")
print(repr(original))
cleaned = clean_ai_watermarks(original)
print("\nПосле очистки:")
print(repr(cleaned))
### Что делает скрипт:
* Удаляет все основные невидимые символы (часто используемые как watermark).
* Можно расширить список
WATERMARK_CHARS, если появятся новые подозрительные символы.Для чего это нужно читайте здесь 👈👈👈
Подпишись 👉🏻 @aigentto 🤖
Telegram
AIGENTTO
Если ваш ИИ-сгенерированный контент пессимизируется поисковиками, то проверьте его на ватермарки. ИИ-сгенерированный контент лучше чистить 🧹
Например, ИИ от OpenAI оставляет скрытые ловушки (ватермарки) в тексте - o4-mini и o3 прячут коды неразрывного пробела…
Например, ИИ от OpenAI оставляет скрытые ловушки (ватермарки) в тексте - o4-mini и o3 прячут коды неразрывного пробела…
🧠 Визуализация работы сортировки прямо в реальном времени!
Мини-скрипт на Python, который показывает, как пузырьковая сортировка двигает элементы.
📌 Этот код сортирует массив из случайных чисел пузырьком и в реальном времени показывает, как перемещаются элементы, используя «█» в консоли.
Без сторонних библиотек. Работает в любом терминале.
Подпишись 👉🏻 @KodduuPython 🤖
Мини-скрипт на Python, который показывает, как пузырьковая сортировка двигает элементы.
import random
import time
import os
def visualize(arr):
os.system('cls' if os.name == 'nt' else 'clear')
for num in arr:
print('█' * num)
time.sleep(0.05)
arr = [random.randint(1, 50) for _ in range(30)]
for i in range(len(arr)):
for j in range(len(arr) - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
visualize(arr)
📌 Этот код сортирует массив из случайных чисел пузырьком и в реальном времени показывает, как перемещаются элементы, используя «█» в консоли.
Без сторонних библиотек. Работает в любом терминале.
Подпишись 👉🏻 @KodduuPython 🤖
👍1
🧩 Мини-решатель судоку за 20 строк!
Рабочий скрипт на Python, который решает любое корректное поле судоку через рекурсивный бэктрекинг.
📌 Этот код решает судоку с помощью бэктрекинга без библиотек. Минималистичная, быстрая и полностью рабочая версия.
Без зависимостей. Просто скопировать и запустить.
Подпишись 👉🏻 @KodduuPython 🤖
Рабочий скрипт на Python, который решает любое корректное поле судоку через рекурсивный бэктрекинг.
def solve(board):
for i in range(9):
for j in range(9):
if board[i][j] == 0:
for n in range(1, 10):
if valid(board, i, j, n):
board[i][j] = n
if solve(board):
return True
board[i][j] = 0
return False
return True
def valid(board, r, c, n):
row = all(board[r][i] != n for i in range(9))
col = all(board[i][c] != n for i in range(9))
box = all(board[r//3*3+i//3][c//3*3+i%3] != n for i in range(9))
return row and col and box
board = [
[5,3,0,0,7,0,0,0,0],
[6,0,0,1,9,5,0,0,0],
[0,9,8,0,0,0,0,6,0],
[8,0,0,0,6,0,0,0,3],
[4,0,0,8,0,3,0,0,1],
[7,0,0,0,2,0,0,0,6],
[0,6,0,0,0,0,2,8,0],
[0,0,0,4,1,9,0,0,5],
[0,0,0,0,8,0,0,7,9]
]
solve(board)
for row in board:
print(row)
📌 Этот код решает судоку с помощью бэктрекинга без библиотек. Минималистичная, быстрая и полностью рабочая версия.
Без зависимостей. Просто скопировать и запустить.
Подпишись 👉🏻 @KodduuPython 🤖
❤1
📚 Как за минуту распарсить огромный CSV-файл размером в гигабайты без загрузки в память!
Когда файл влезает в оперативку — всё легко. Но если файл 10+ ГБ?
Тогда надо читать его построчно, аккуратно обрабатывать и не уронить машину.
Вот рабочий скрипт:
📌 Этот код обрабатывает гигабайтные CSV-файлы без переполнения памяти.
Файл читается построчно через
Функция
📦 Ничего устанавливать не надо — только стандартная библиотека Python.
---
✅ Реальная сложность задачи:
- Оперативная память ограничена: файл нельзя просто
- Нужно обрабатывать миллионы строк быстро и без потерь.
- Требуется минимальное потребление памяти, чтобы не убить сервер/ноутбук.
Подпишись 👉🏻 @KodduuPython 🤖
Когда файл влезает в оперативку — всё легко. Но если файл 10+ ГБ?
Тогда надо читать его построчно, аккуратно обрабатывать и не уронить машину.
Вот рабочий скрипт:
import csv
def process_row(row):
# Здесь твоя логика обработки
if int(row['price']) > 1000:
print(f"{row['name']} стоит {row['price']}")
with open('bigfile.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
process_row(row)
📌 Этот код обрабатывает гигабайтные CSV-файлы без переполнения памяти.
Файл читается построчно через
csv.DictReader, без полной загрузки в память. Функция
process_row позволяет применить любую бизнес-логику к данным.📦 Ничего устанавливать не надо — только стандартная библиотека Python.
---
✅ Реальная сложность задачи:
- Оперативная память ограничена: файл нельзя просто
pandas.read_csv().- Нужно обрабатывать миллионы строк быстро и без потерь.
- Требуется минимальное потребление памяти, чтобы не убить сервер/ноутбук.
Подпишись 👉🏻 @KodduuPython 🤖
👍3
Все еще можно успеть на поезд "Старт курса с преподавателем на Майские". Начать можно и после майских 👉 Профессия Python-разработчик.
Реклама. Информация о рекламодателе по ссылкам в посте.
Реклама. Информация о рекламодателе по ссылкам в посте.
Для извлечения текста из пиксельных PDF (то есть отсканированных документов, где текст представлен как изображение), нужно использовать OCR (оптическое распознавание символов). Один из самых популярных инструментов — Tesseract OCR, в связке с
Вот пример кода:
### ✅ Установка необходимых библиотек:
> 📌 Также нужно установить сам Tesseract OCR:
* macOS:
* Ubuntu:
* Windows: [Скачать Tesseract здесь](https://github.com/tesseract-ocr/tesseract#windows)
---
### 🧠 Python-скрипт для извлечения текста из пиксельного PDF:
---
### ⚙️ Если нужен русский язык:
* Убедитесь, что установлен русский язык для Tesseract.
* Для macOS:
* Для Ubuntu:
* В коде:
Подпишись 👉🏻 @KodduuPython 🤖
pdf2image и pytesseract.Вот пример кода:
### ✅ Установка необходимых библиотек:
pip install pytesseract pdf2image pillow
> 📌 Также нужно установить сам Tesseract OCR:
* macOS:
brew install tesseract* Ubuntu:
sudo apt install tesseract-ocr* Windows: [Скачать Tesseract здесь](https://github.com/tesseract-ocr/tesseract#windows)
---
### 🧠 Python-скрипт для извлечения текста из пиксельного PDF:
import pytesseract
from pdf2image import convert_from_path
from PIL import Image
# Путь к вашему PDF
pdf_path = 'example_scanned.pdf'
# Преобразуем PDF в изображения (по одной странице)
pages = convert_from_path(pdf_path, dpi=300)
all_text = []
# Обрабатываем каждую страницу
for i, page in enumerate(pages):
# Преобразуем страницу в текст с помощью OCR
text = pytesseract.image_to_string(page, lang='eng') # для русского: lang='rus'
all_text.append(f"--- Page {i+1} ---\n{text}\n")
# Сохраняем результат в файл
with open('output_text.txt', 'w', encoding='utf-8') as f:
f.writelines(all_text)
print("✅ Текст успешно извлечен и сохранён в output_text.txt")
---
### ⚙️ Если нужен русский язык:
* Убедитесь, что установлен русский язык для Tesseract.
* Для macOS:
brew install tesseract-lang + rus.traineddata* Для Ubuntu:
sudo apt install tesseract-ocr-rus* В коде:
pytesseract.image_to_string(..., lang='rus')Подпишись 👉🏻 @KodduuPython 🤖
GitHub
GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)
Tesseract Open Source OCR Engine (main repository) - tesseract-ocr/tesseract
🔥4
🐍 Python: Генерация QR-кодов с логотипом
Хочешь создать QR-код, который не только работает, но и выглядит стильно? Добавим логотип в центр QR-кода!
📌 Что здесь происходит:
- Используем библиотеку
- Устанавливаем высокий уровень коррекции ошибок (`ERROR_CORRECT_H`), чтобы QR-код оставался читаемым даже с логотипом.
- Добавляем логотип в центр QR-кода с помощью
📎 Примечание: Убедитесь, что логотип не слишком большой, чтобы не затруднить сканирование QR-кода.
Подпишись 👉🏻 @KodduuPython 🤖
Хочешь создать QR-код, который не только работает, но и выглядит стильно? Добавим логотип в центр QR-кода!
import qrcode
from PIL import Image
# Данные для QR-кода
data = "https://example.com"
# Создание QR-кода
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H)
qr.add_data(data)
qr.make()
qr_img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
# Загрузка логотипа
logo = Image.open("logo.png")
# Изменение размера логотипа
box_size = qr_img.size[0] // 4
logo = logo.resize((box_size, box_size))
# Позиционирование логотипа в центре
pos = ((qr_img.size[0] - box_size) // 2, (qr_img.size[1] - box_size) // 2)
qr_img.paste(logo, pos)
# Сохранение результата
qr_img.save("qr_with_logo.png")
📌 Что здесь происходит:
- Используем библиотеку
qrcode для создания QR-кода.- Устанавливаем высокий уровень коррекции ошибок (`ERROR_CORRECT_H`), чтобы QR-код оставался читаемым даже с логотипом.
- Добавляем логотип в центр QR-кода с помощью
PIL.📎 Примечание: Убедитесь, что логотип не слишком большой, чтобы не затруднить сканирование QR-кода.
Подпишись 👉🏻 @KodduuPython 🤖
❤1
🐍 Преврати любой текст в ASCII-арт прямо в терминале**
Добавь ретро-вайб своей программе — пусть вывод будет как в хакерских фильмах 👾
📌 Что делает код:
- Использует библиотеку
- Работает прямо в терминале, можно использовать в логотипах CLI-интерфейсов, баннерах, меню и т.п.
🛠 Установи через pip:
Подпишись 👉🏻 @KodduuPython 🤖
Добавь ретро-вайб своей программе — пусть вывод будет как в хакерских фильмах 👾
from pyfiglet import Figlet
f = Figlet(font='slant') # Можно выбрать другие: 'block', 'bubble', 'doom', 'starwars' и др.
text = "Hack the World"
ascii_art = f.renderText(text)
print(ascii_art)
📌 Что делает код:
- Использует библиотеку
pyfiglet для генерации текста в стиле ASCII-арта.- Работает прямо в терминале, можно использовать в логотипах CLI-интерфейсов, баннерах, меню и т.п.
🛠 Установи через pip:
pip install pyfiglet
Подпишись 👉🏻 @KodduuPython 🤖
Скидка на программу FullStack Developer and Data Scientist (Python+JS+Data) до 18 мая 🔥🔥🔥
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖