💻 Практические примеры

⚡ Минимальный рабочий пример

import re

phones = re.findall(r"\+49\d+", "Call +49123456789")
print(phones)  # ['+49123456789']

Пример 1. Чтение и агрегация JSON

Группировка данных по ключу и вычисление среднего:

import json
from collections import defaultdict
from pathlib import Path

grades = json.loads(Path("grades.json").read_text(encoding="utf-8"))

by_student: defaultdict[str, list[int]] = defaultdict(list)
for entry in grades:
    by_student[entry["name"]].append(entry["grade"])

averages = {
    name: round(sum(values) / len(values), 2)
    for name, values in by_student.items()
}
print(averages)

Пример 2. Нормализация телефонного номера

Удаляем всё, кроме цифр, и приводим к формату +49...:

import re

raw = "+49 157 1234-5678"
clean = re.sub(r"\D", "", raw)  # '4915712345678'
if clean.startswith("0049"):
    clean = clean[4:]
elif clean.startswith("49"):
    clean = clean[2:]
print(f"+49{clean}")  # +4915712345678

Пример 3. Определение квартала по дате

from datetime import datetime

def get_quarter(date_str: str) -> str | None:
    month = datetime.strptime(date_str, "%d-%m-%Y").month
    if 1 <= month <= 3:
        return "Q1"
    if 4 <= month <= 5:
        return "Q2"
    if 9 <= month <= 12:
        return "Q3"
    return None  # летние месяцы

print(get_quarter("06-09-2025"))  # Q3
print(get_quarter("15-04-2025"))  # Q2

Пример 4. Генератор для чтения файла

from pathlib import Path

def emails_from_file(path: Path):
    with path.open(encoding="utf-8") as file:
        for line in file:
            if "@" in line:
                yield line.strip()

for email in emails_from_file(Path("contacts.txt")):
    print(email)

Как запустить в VS Code

  1. Создайте папку python-fundamentals-practice/lesson-61/.
  2. Создайте файлы данных (grades.json, german_numbers.txt) и скрипты.
  3. Откройте терминал в VS Code (Ctrl + `).
  4. Активируйте виртуальное окружение: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  5. Запустите: python task_01_grades.py