Я использую питон уценку сделать следующее:прилагая текст etree элемента HTML уценки
Когда есть выражение вида [test]
, я хочу сделать это как
<span>[<a>test</a>]</span>
К что конец, я применяю расширение к inlinePatterns уценки в:
PATTERN = r'\[(test)\]'
class PerceptionPattern(Pattern):
def handleMatch(self, m):
span = etree.Element('span')
anchor = etree.SubElement(span, "a")
span.text = markdown.util.AtomicString("[")
span.tail = markdown.util.AtomicString("]")
anchor.text = m.group(2)
return span
class TestExtension(markdown.extensions.Extension):
"""Adds cite extension to Markdown class"""
def extendMarkdown(self, md, md_globals):
"""Modifies inline patterns"""
md.inlinePatterns.add('test', PerceptionPattern(PATTERN), '<not_strong')
Однако это возвращение
<span>[]<a>test</a></span>
Я не уверен .tail
- правильный атрибут, но я не нахожу правильный синтаксис.
Как я могу это сделать?
Полная программа
from markdown.inlinepatterns import Pattern
from markdown.util import etree
from markdown import Markdown
import markdown
PATTERN = r'\[(test)\]'
class TestPattern(Pattern):
def handleMatch(self, m):
span = etree.Element('span')
anchor = etree.SubElement(span, "a")
span.text = markdown.util.AtomicString("[")
span.tail = markdown.util.AtomicString("]")
#anchor.tail = markdown.util.AtomicString("]")
anchor.text = m.group(2)
return span
class TestExtension(markdown.extensions.Extension):
def extendMarkdown(self, md, md_globals):
"""Modifies inline patterns"""
md.inlinePatterns.add('test_pattern', TestPattern(PATTERN), '<not_strong')
md = Markdown(extensions=[TestExtension()])
print md.convert(u'[test]')
Можете ли вы включить полную программу, которая демонстрирует проблему? См. Http://SSCCE.ORG/. –
@ Robᵩ, добавлен полный пример, спасибо за ссылку. –