Прямо сейчас я использую множество regexes, чтобы "проанализировать" данные в mediawiki разметке в списки/словари, так, чтобы элементы в статье могли использоваться.
Это - едва лучший метод, поскольку количество случаев, которые должны быть сделаны, является большим.
Как можно было бы проанализировать mediawiki разметку статьи во множество объектов Python так, чтобы данные в могли использоваться?
Пример быть:
Множество regexes может достигнуть вышеупомянутого, но я нахожу число, которое я должен сделать довольно большими.
Вот mediawiki неофициальная спецификация (я не нахожу их официальную спецификацию как полезную).
mwlib предоставляет библиотеку для разбора статей MediaWiki и их конвертирования в различные выходные форматы. mwlib используется функцией Википедии "Печать/экспорт" для создания PDF-документов из статей Википедии.
Вот страница документация. Старая страница документации содержит пример с одним линером:
from mwlib.uparser import simpleparse
simpleparse("=h1=\n*item 1\n*item2\n==h2==\nsome [[Link|caption]] there\n")
Если вы хотите посмотреть, как она используется в действии, посмотрите тестовые примеры, которые прилагаются к коду. (mwlib/tests/test_parser.py из git-репозитория):
from mwlib import parser, expander, uparser
from mwlib.expander import DictDB
from mwlib.xfail import xfail
from mwlib.dummydb import DummyDB
from mwlib.refine import util, core
parse = uparser.simpleparse
def test_headings():
r=parse(u"""
= 1 =
== 2 ==
= 3 =
""")
sections = [x.children[0].asText().strip() for x in r.children if isinstance(x, parser.Section)]
assert sections == [u"1", u"3"]
Также смотрите Спецификация разметки и Альтернативные парсеры для более подробной информации.
.