Сделай скрипт, который из формата вики преобразует текст в Markdown и удаляет из него…
- User
Сделай скрипт, который из формата вики преобразует текст в Markdown и удаляет из него все внешние ссылки и ссылки на другие статьи вики
- Assistant
Вот простой скрипт на Python:
import re def convert_wiki_to_md(text): # Удаление ссылок text = re.sub(r'\[\[(?:[^\]|]*\|)?([^\]|]+)\]\]', r'\1', text) text = re.sub(r'\[(?:[^\]]+)?\]', '', text) # Преобразование заголовков for i in range(6, 0, -1): text = re.sub(r'^(={{{}}} )(.+?)( {{{}}}=)'.format(i, i), r'{} \2'.format('#' * i), text, flags=re.MULTILINE) # Преобразование списков text = re.sub(r'^(\*+) (.+)', lambda match: ' ' * (len(match.group(1)) - 1) + '* ' + match.group(2), text, flags=re.MULTILINE) text = re.sub(r'^(\#+) (.+)', lambda match: ' ' * (len(match.group(1)) - 1) + '1. ' + match.group(2), text, flags=re.MULTILINE) # Преобразование выделения текста text = re.sub(r"'''(.+?)'''", r'**\1**', text) text = re.sub(r"''(.+?)''", r'*\1*', text) return textЭтот скрипт удаляет все ссылки из текста и преобразует заголовки, списки и выделение текста из формата вики в формат Markdown. Вы можете использовать его как отправную точку и добавить дополнительные функции или изменить его в соответствии с вашими потребностями.
- User
Спасибо, код вроде работает, но мне не совсем ясны каими должны быть входные данные.
если это страница
htmlто данная функция его не выполняет.если же это просто скопированный текст с веб страницы то оформление не сорханится, а значит я неверно указал условия.
пожалуйста переделай этот код для преобразования страницы
htmlсайтаwikipediaвmarkdownс удалением всех внешних ссылок на другие статьи википедии - Assistant
Конечно, вот исправленный код:
import re from bs4 import BeautifulSoup def convert_wiki_to_md(html): # Parse the HTML using BeautifulSoup soup = BeautifulSoup(html, 'html.parser') # Remove external links for link in soup.find_all('a'): if link.has_attr('href') and 'wikipedia.org' not in link['href']: link.replace_with(link.text) # Convert the remaining HTML to Markdown md = str(soup) md = re.sub(r'<ref[^>]*>[^<]*</ref>', '', md) md = re.sub(r'(?m)^=+(.+?)=+$', lambda m: '#' * (m.group(0).count('=') - 1) + ' ' + m.group(1), md) md = re.sub(r'(?m)^\*(.*)$', lambda m: '- ' + m.group(1).strip(), md) md = re.sub(r'(?m)^\d+\.(.*)$', lambda m: '1. ' + m.group(1).strip(), md) md = re.sub(r"'''(.+?)'''", r'**\1**', md) md = re.sub(r"''(.+?)''", r'*\1*', md) md = re.sub(r'<[^>]+>', '', md) return mdЭтот код использует модуль BeautifulSoup для парсинга HTML и удаления внешних ссылок на другие статьи Википедии. Затем он использует регулярные выражения и lambda функции для преобразования оставшегося HTML в формат Markdown.