Я хочу иметь возможность включать пользовательский тег «HTML» в строку, например: "This is a <photo id="4" /> string"
.
В этом случае пользовательский тег имеет значение <photo id="4" />
.Я также хотел бы изменить этот пользовательский тег, чтобы он записывался по-другому, если это облегчает задачу, например [photo id:4]
или что-то в этом роде.
Я хочу иметь возможность передать эту строку в функцию, которая будет извлекать тег <photo id="4" />
, и позвольте мне преобразовать его в более сложный шаблон, такой как <div class="photo"><img src="...." alt="..."></div>
, который я затем смогу использовать для замены тега в исходной строке.
Я представляю, как он работает примерно так:
>>> content = "This is a <photo id="4" /> string"
# Pass the string to a function that returns all the tags with the given name.
>>> tags = parse_tags('photo', string)
>>> print(tags)
[{'tag': 'photo', 'id': 4, 'raw': '<photo id="4" />'}]
# Now that I know I need to render a photo with ID 4, so I can pass that to some sort of template thing
>>> rendered = render_photo(id=tags[0]['id'])
>>> print(rendered)
<div class="photo"><img src="...." alt="..."></div>
>>> content = content.replace(tags[0]['raw'], rendered)
>>> print(content)
This is a <div class="photo"><img src="...." alt="..."></div> string
Я думаю, что это довольно распространенный шаблон для чего-то вроде размещения фотографии в сообщении в блоге, поэтому мне интересно, есть ли библиотека, которая будет делать что-то похожее на пример parse_tags
функция выше.Или мне нужно написать это?
Этот пример тега photo является всего лишь одним примером.Я хотел бы иметь теги с разными именами.В качестве другого примера, может быть, у меня есть база данных людей, и я хочу тег типа <person name="John Doe" />
.В этом случае я хочу получить что-то вроде {'tag': 'person', 'name': 'John Doe', 'raw': '<person name="John Doe" />'}
.Затем я могу использовать имя, чтобы найти этого человека и вернуть обработанный шаблон его визитной карточки или чего-то еще.