如何将html标签添加到字符串,避免嵌套标签

时间:2019-03-24 21:34:06

标签: python html regex

我有一个字符串,其中包含文本和html标签(仅这样的标签:<a href=""></a>)。

如何使用“ i”标签修饰“ a”标签之外的文本,避免嵌套标签(例如:<i><a href=""></a></i>)。

我要实现的目标:

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

“ a”标签外的文字装饰有“ i”标签,而“ a”周围没有“ i”标签。

我在想:

  1. 使用正则表达式按标签分割字符串
  2. 为结果列表中的每个项目添加<i>标记
  3. “ $”。join(步骤2中的列表)
  4. 将“ $”替换为拆分时被删除的“ a”标签。

有人能建议我什么更好的方法,因为我认为这不是一个好方法。

更新: 添加了原始字符串示例:

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

Michael Butscher 的解决方案对我有效。

1 个答案:

答案 0 :(得分:0)

那么,我想您需要更改此问题的描述以使其更加清楚,但是设法弄清楚这一点很棒。我什至可以分叉此步骤,看看是否可以一步完成。这会考虑您已经具有一些<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>