Как добавить HTML-теги в строку, избегая вложенных тегов - PullRequest
0 голосов
/ 25 марта 2019

У меня есть строка, содержащая теги text и html (только такие теги: <a href=""></a>).

Как мне украсить текст вне тега "a" тегом "i", избегая вложенных тегов (например: <i><a href=""></a></i>).

Чего я хочу добиться:

<i>some text</i><a href="link">link text</a><i>another text in the message</i>

Текст вне тегов "a" украшен тегами "i" без тегов "i" вокруг "a".

Я думал о:

  1. Разделение строки по тегам с использованием регулярного выражения
  2. Для каждого элемента в списке результатов добавьте <i> теги
  3. "$". Join (список из шага # 2)
  4. Замените "$" на теги "a", которые были удалены при разбиении.

Может кто-нибудь посоветовать мне что-нибудь получше, потому что я не думаю, что это хороший способсделайте это.

ОБНОВЛЕНИЕ: Добавлен оригинальный пример строки:

some text<a href="link">link text</a>another text in the message

Решение от Майкл Бучер сработало для меня, как и ожидалось.

1 Ответ

0 голосов
/ 25 марта 2019

Ооо, я бы сказал, что вам нужно изменить описание этой проблемы, чтобы она была немного более понятной, но попытка понять это потрясающе. Я мог бы даже раскошелиться, чтобы увидеть, можно ли это сделать за один шаг. При этом учитываются документы, в которых у вас уже есть некоторые теги <i>.

Надеюсь, это работает

>>> string = ''' <a href=""></a>   <i><a href=""></a></i> '''


>>> def add_i_tags(string):
        import re
        new_string = re.sub(r'(?<!<i>)(<a)', r'<i>\1', string)
        new_string = re.sub(r'(/a>)(?!</i>)', r'\1</i>', new_string)
        return new_string



>>> added_to_string = add_i_tags(string)





#Output

>>> print(added_to_string)

<i><a href=""></a></i>   <i><a href=""></a></i> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...