Я хочу анализировать файлы разметки для определенных элементов (например, ссылки) и получать значения из этих элементов, и я не могу найти способ для этого, используя пакет python-markdown. Можно ли это сделать с помощью указанного пакета, или мне нужно сделать .md в html, а затем использовать какой-нибудь инструмент, например, красивый суп, чтобы разобрать html, чтобы получить элементы и/или структуру?Элементы parse из markdown
2
A
ответ
1
Вот библиотека, которая могла бы работать для вас: https://github.com/revolunet/sublimetext-markdown-preview
0
вариант python3 является ReParser
pip install ReParser
пример в его документации (вставить в конце) выведет:
[('Hello ', {}),
('bold', {'is_bold': True}),
(' world!', {}),
('\n', {'segment_type': 'LINE_BREAK'}),
('You can ', {}),
('try ', {'is_bold': True}),
('this', {'is_bold': True, 'is_italic': True}),
(' awesome', {'is_bold': True}),
(' ', {}),
('link', {'link_target': 'http://www.eff.org'}),
('.', {})]
пример кода:
import re
from pprint import pprint
from reparser import Parser, Token, MatchGroup
boundary_chars = r'\s`!()\[\]{{}};:\'".,<>?«»“”‘’*_~='
b_left = r'(?:(?<=[' + boundary_chars + r'])|(?<=^))' # Lookbehind
b_right = r'(?:(?=[' + boundary_chars + r'])|(?=$))' # Lookahead
markdown_start = b_left + r'(?<!\\){tag}(?!\s)(?!{tag})'
markdown_end = r'(?<!{tag})(?<!\s)(?<!\\){tag}' + b_right
markdown_link = r'(?<!\\)\[(?P<link>.+?)\]\((?P<url>.+?)\)'
newline = r'\n|\r\n'
url_proto_regex = re.compile(r'(?i)^[a-z][\w-]+:/{1,3}')
def markdown(tag):
"""Return sequence of start and end regex patterns for simple Markdown tag"""
return (markdown_start.format(tag=tag), markdown_end.format(tag=tag))
def url_complete(url):
"""If URL doesn't start with protocol, prepend it with http://"""
return url if url_proto_regex.search(url) else 'http://' + url
tokens = [
Token('bi1', *markdown(r'\*\*\*'), is_bold=True, is_italic=True),
Token('bi2', *markdown(r'___'), is_bold=True, is_italic=True),
Token('b1', *markdown(r'\*\*'), is_bold=True),
Token('b2', *markdown(r'__'), is_bold=True),
Token('i1', *markdown(r'\*'), is_italic=True),
Token('i2', *markdown(r'_'), is_italic=True),
Token('pre3', *markdown(r'```'), skip=True),
Token('pre2', *markdown(r'``'), skip=True),
Token('pre1', *markdown(r'`'), skip=True),
Token('s', *markdown(r'~~'), is_strikethrough=True),
Token('u', *markdown(r'=='), is_underline=True),
Token('link', markdown_link, text=MatchGroup('link'),
link_target=MatchGroup('url', func=url_complete)),
Token('br', newline, text='\n', segment_type="LINE_BREAK")
]
parser = Parser(tokens)
text = ('Hello **bold** world!\n'
'You can **try *this* awesome** [link](www.eff.org).')
segments = parser.parse(text)
pprint([(segment.text, segment.params) for segment in segments])
Смежные вопросы
- 1. Parse markdown reference with markdown-it
- 2. Проанализируйте и перемещайте элементы из файла Markdown
- 3. Удалить отдельные элементы из массива parse
- 4. Markdown: исключить элементы на слайдах из «здания» в ioslides
- 5. Элемент parse, содержащий элементы массива
- 6. Создать Markdown из шаблона
- 7. Как получить элементы из массива указателей из Parse - Использование Swift
- 8. Write markdown using markdown
- 9. Создание отрывка из статьи Markdown
- 10. Strip Markdown текст из файлов
- 11. parse html-элементы с помощью Jsoup
- 12. Scrapy - генерирующие элементы вне обратного вызова parse
- 13. Partial Markdown parsing
- 14. Android GridView дублирует элементы Parse SDK
- 15. Parse() не может получить все элементы
- 16. JQuery parse html (искать нестандартные элементы)
- 17. Элементы Parse PayPal правильно вернули значения
- 18. Parse - Получить только элементы с соответствующими ACL
- 19. Parse xml - дочерние элементы не обрабатываются
- 20. Markdown Prettify
- 21. Семантическая маркировка в Markdown
- 22. Javascript Markdown Parsing
- 23. Python Markdown: Markdown Внутри HTML-блоков
- 24. Редактор Markdown Markdown с пользовательским предварительным просмотром
- 25. i18n/Markdown - поддерживает ли Markdown интернационализацию?
- 26. Markdown Regex in R
- 27. markdown subset
- 28. Markdown output
- 29. Markdown Сноски
- 30. BitBucket markdown
python 3 https://pypi.python.org/pypi/ReParser/1.4 – n611x007