मैं अजगर का उपयोग कर रहा हूं और एक स्ट्रिंग से सभी HTML टैग को हटाना चाहता हूं जो "कुछ टैग में संलग्न नहीं हैं। इस उदाहरण में, मैं उन सभी HTML टैग को हटाना चाहता हूं जो" t संलग्न नहीं हैं। <header>
टैग</header>
और उस संलग्न टैग को भी नहीं हटाएं।
उदाहरण के लिए:
<h1>Morning</h1>
<header>
<h1>Afternoon</h1>
<h2>Evening</h2>
</header>
<h2>Night</h2>
परिणाम:
Morning
<header>
<h1>Afternoon</h1>
<h2>Evening</h2>
</header>
Night
मैंने इस पर घंटों बिताए लेकिन कोई भाग्य नहीं। मुझे पता है कि निम्नलिखित सभी टैग मिलेंगे:
re.sub("<.*?>", "", mystring)
और यह हेडर टैग के भीतर कुछ भी मिलेगा:
re.sub("<header>.*?</header>", "", mystring)
लेकिन मैं इसे कैसे नकार सकता हूं, ताकि पहला रेगेक्स नजरअंदाज करे कि दूसरा रेग्क्स क्या पाता है? कोई भी मदद बहुत ही सराहनीय होगी! धन्यवाद! :)
उत्तर:
जवाब के लिए 3 № 1आप इसे जल्दी और आसानी से उपयोग कर सकते हैं BeautifulSoup
, जैसा कि टिप्पणियों में जोसेफ वाल्स ने उल्लेख किया है। ऐसे:
from bs4 import BeautifulSoup
soup = BeautifulSoup("""<h1>Morning</h1>
<header>
<h1>Afternoon</h1>
<h2>Evening</h2>
</header>
<h2>Night</h2>""", "html.parser")
for tag in soup.find_all(recursive=False):
if not tag.findChildren():
tag.unwrap()
print(soup)
यह प्रिंट करता है:
Morning
<header>
<h1>Afternoon</h1>
<h2>Evening</h2>
</header>
Night