/
obuxxxov
/
CodeForge
Обзор
Документация
Войти
/
obuxxxov
/
CodeForge
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
comb
analyzer/transform.py
77 строк
3 KB
ObliInSe
start
18 авг 2025, 00:31
18 авг 2025, 00:31
0671f4e
Код
Авторство
О чём код?
import pandas as pd import json import ast import re def process_excel_file(filename): """ Обрабатывает Excel-файл: 1. Переименовывает колонку "Темы для изучения" в "Темы для изучения_2" 2. Создает новую колонку "Темы для изучения" с ключами из словаря """ # Читаем Excel-файл print(f"Читаем файл: {filename}") df = pd.read_excel(filename) print("Исходные колонки:", df.columns.tolist()) # Проверяем, есть ли колонка "Темы для изучения" if "Темы для изучения" not in df.columns: print("Ошибка: Колонка 'Темы для изучения' не найдена!") return # Переименовываем колонку def extract_keys_from_string(dict_str): """ Извлекает ключи из строки в формате ["ключ":"значение", "ключ2":"значение2"] """ if pd.isna(dict_str) or dict_str == "": return "" try: if isinstance(dict_str, str): dict_str = dict_str.strip() # Обрабатываем формат ["ключ":"значение", "ключ2":"значение2"] if dict_str.startswith('[') and dict_str.endswith(']'): # Убираем внешние скобки content = dict_str[1:-1] # Ищем все пары ключ:значение # Паттерн для поиска ключей в кавычках pattern = r'"([^"]*)"\s*:\s*"[^"]*"' matches = re.findall(pattern, content) if matches: return ", ".join(matches) # Альтернативный паттерн для случаев без кавычек pattern2 = r'([^:,\s]+)\s*:\s*[^,\s]+' matches2 = re.findall(pattern2, content) if matches2: return ", ".join(matches2) return str(dict_str) except Exception as e: print(f"Ошибка при обработке: {dict_str[:50]}... - {e}") return str(dict_str) if __name__ == "__main__": # Обрабатываем основной файл # process_excel_file("competency_with_learning_topics.xlsx") df = pd.read_excel('competency_with_learning_topics.xlsx') df = df.rename(columns={'Темы для изучения': 'Темы для изучения_2'}) # Создаем новую колонку с ключами df['Темы для изучения'] = df['Темы для изучения_2'].apply(extract_keys_from_string) df = df.rename(columns={'Навык':'Компетенция'}) df=df.drop(columns=['Темы для изучения_2', 'Проблемные темы']) df = df.rename(columns={'Оценка':'Оценка AI'}) # Сохраняем результат df.to_excel('competency_with_learning_topics_transformed.xlsx', index=False)