簡體   English   中英

Python-從HTML移除'style'-屬性

[英]Python - Remove 'style'-attribute from HTML

我在Python中有一個String,其中有一些HTML。 基本上看起來像這樣。

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

我嘗試以PDF顯示此HTML。 因為我的PDF生成器無法處理樣式屬性(而且不能,我不能再使用另一個),所以必須將其從字符串中刪除。 所以基本上,它應該像這樣:

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

我想做到這一點的最佳方法是使用RegEx,但是我並不十分熱衷。 有人可以幫我嗎?

我不會為此使用RegEx,因為

  1. 正則表達式並不真正適合HTML解析,即使這是一個簡單的例子,也可能需要考慮多種變化和邊緣情況,結果正則表達式可能會成為噩夢
  2. 正則表達式很爛。 它可能確實有用,但是說實話,它們是用戶不友好的縮影。

好吧,那我該怎么做。 我會使用值得信賴的BeautifulSoup 使用以下命令以pip進行安裝:

pip install beautifulsoup4

然后,您可以執行以下操作刪除樣式:

from bs4 import BeautifulSoup as Soup

del Soup(someString).find('img')['style']

這首先解析您的字符串,然后找到img標簽,然后刪除其style屬性。

它也應該與任意字符串一起工作,但是我不能保證。 也許您會想到一個邊緣保護套。

請記住,使用RegEx解析HTML字符串並不是最好的主意。 互聯網和Stackoverflow充滿了為什么無法實現的答案。

編輯:只是踢,你可能想看看這個答案 當有人說甚至喬恩·斯基特(Jon Skeet)也做不到時,您知道事情很嚴重。

使用RegEx處理HTML是一個非常糟糕的主意,但是如果您真的想使用它,請嘗試以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM