import re import gradio as gr def parse_comments(raw_text): # Разбиваем текст на отдельные комментарии по "Ответить", что указывает на конец каждого блока комментария comment_blocks = raw_text.split("Ответить") results = [] for block in comment_blocks: # Находим никнейм пользователя, начиная с начала строки до первого не-буквенного символа или цифры user_match = re.search(r'^([a-zA-Z0-9_]+)', block.strip()) # Находим текст комментария, который начинается после никнейма и перед временем ("1 нед." или "1 дн.") text_match = re.search(r'@\w+\s+(.+?)(?:\d+\s(?:нед|дн)\.)', block) # Находим количество лайков, если оно указано likes_match = re.search(r'Нравится:\s*(\d+)', block) if user_match and text_match: user = user_match.group(1) text = text_match.group(1).strip() likes = int(likes_match.group(1)) if likes_match else 0 # Добавляем результат в список только если текст не пустой if text: results.append({"Пользователь": user, "Текст": text, "Лайков": likes}) return results def format_output(parsed_comments): # Форматируем вывод в текстовом формате formatted_output = "" for comment in parsed_comments: formatted_output += f"Пользователь: {comment['Пользователь']}\n" formatted_output += f"Текст: {comment['Текст']}\n" formatted_output += f"Лайков: {comment['Лайков']}\n\n" return formatted_output def process_text(raw_text): parsed_comments = parse_comments(raw_text) return format_output(parsed_comments) # Настройка Gradio интерфейса iface = gr.Interface( fn=process_text, inputs=gr.Textbox(lines=10, placeholder="Введите текст сюда..."), outputs=gr.Textbox(lines=10, placeholder="Результат...") ) # Запуск интерфейса iface.launch()