Python - 从HTML中删除' style' -attribute

时间:2016-08-18 08:03:08

标签: python html

我在Python中有一个String,里面有一些HTML。基本上它看起来像这样。

>>> print someString     # I get someString from the backend
"<img style='height:50px;' src='somepath'/>"

我尝试在PDF中显示此HTML。因为我的PDF生成器无法处理styles-attribute(不,我不能再使用另一个),我必须从字符串中删除它。基本上,它应该是这样的:

>>> print someString     # I get someString from the backend
"<img style='height:50px;' src='somepath'/>"
>>> parsedString = someFunction(someString)
>>> print parsedString
"<img src='somepath'/>"

我想最好的方法是使用RegEx,但我并不是非常热衷于此。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

我不会使用RegEx,因为

  1. 正则表达式并不适合HTML解析,即使这很简单,也可能需要考虑许多变体和边缘情况,并且最终的正则表达式可能会变成一场噩梦。
  2. 正则表达很糟糕。它真的很有用但老实说,它们是用户不友好的缩影。
  3. 好吧,那我该怎么办呢。我会使用可靠的BeautifulSoup!使用以下命令使用pip进行安装:

    pip install beautifulsoup4

    然后您可以执行以下操作以删除样式:

    from bs4 import BeautifulSoup as Soup
    
    del Soup(someString).find('img')['style']
    

    首先解析您的字符串,然后找到img标记,然后删除其style属性。

    它也应该使用任意字符串,但我不能保证。也许你会想出一个边缘案例。

    请记住,使用RegEx解析HTML字符串不是最好的想法。互联网和Stackoverflow充满了答案,为什么这是不可能的。

    编辑:只是为了踢,你可能想看看这个answer。你知道,即使Jon Skeet也不能这样做,事情也很严重。

答案 1 :(得分:-1)

使用RegEx处理HTML是一个非常糟糕的主意,但如果你真的想使用它,试试这个:

/style=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?/ig