दिलचस्प पोस्ट
पृष्ठभूमि सेवा में वॉल्यूम बटन को सुनें? मैं jQuery पर $ (दस्तावेज़) फ़ंक्शन को निष्पादित करने के लिए क्यों नहीं उपयोग कर सकता हूं। पायथन में अधिकतम-हेप कार्यान्वयन के लिए मैं क्या उपयोग करूं? कैसे नियंत्रण का पता लगाने के लिए + एक onclick div विशेषता से जावास्क्रिप्ट में क्लिक करें? स्विफ्ट से सी कैसे कॉल करें? क्यों बिल्कुल eval बुराई है? FXML का उपयोग करके JavaFX 2.0 में कस्टम घटकों को कैसे बनाएं? आईडी के लिए एंड्रॉइड फ्रेगमेंट कोई दृश्य नहीं मिला? मैं एएसपी.नेट एमवीसी के लिए '404 पृष्ठ नहीं मिला' प्रश्नों को कैसे संभाल सकता हूं? प्रक्रिया विशेषाधिकार को प्रोग्रामेटिक रूप से बढ़ाना? अस्थायी मृत क्षेत्र क्या है? जार के अंदर जार का संदर्भ लंबितइंन्टेंट पहली सूचना के लिए सही तरीके से काम करता है लेकिन शेष के लिए गलत तरीके से काम करता है इंटरफ़ेस बिल्डर के साथ बनाई गई किसी निब फ़ाइल का उपयोग करके UIView को कैसे लोड करें घुमावदार एनीमेशन प्राप्त करने में समस्या

पायथन स्ट्रिंग में HTML संस्थाओं को डिकोड करें?

मैं सुंदर सूप 3 के साथ कुछ एचटीएमएल पार्स कर रहा हूँ, लेकिन इसमें एचटीएमएल संस्थाएं हैं जो सुंदर सूप 3 मेरे लिए स्वचालित रूप से डीकोड नहीं करती हैं:

>>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup("<p>&pound;682m</p>") >>> text = soup.find("p").string >>> print text &pound;682m 

"&pound;682m" "£682m" बजाय "£682m" पाने के लिए मैं HTML एंटिटी को text में कैसे व्याख्या कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "पायथन स्ट्रिंग में HTML संस्थाओं को डिकोड करें?"

पायथन 3.4+

HTMLParser.unescape को नापसंद किया गया है, और इसे 3.5 में हटाया जाना था , हालांकि इसे गलती से छोड़ दिया गया था इसे जल्द ही भाषा से निकाल दिया जाएगा। इसके बजाय, html.unescape() उपयोग करें:

 import html print(html.unescape('&pound;682m')) 

https://docs.python.org/3/library/html.html#html.unescape देखें


पायथन 2.6-3.3

आप मानक पुस्तकालय से HTML पार्सर का उपयोग कर सकते हैं:

 >>> try: ... # Python 2.6-2.7 ... from HTMLParser import HTMLParser ... except ImportError: ... # Python 3 ... from html.parser import HTMLParser ... >>> h = HTMLParser() >>> print(h.unescape('&pound;682m')) £682m 

http://docs.python.org/2/library/htmlparser.html देखें

आयात को आसान बनाने के लिए आप six संगतता लाइब्रेरी का भी उपयोग कर सकते हैं:

 >>> from six.moves.html_parser import HTMLParser >>> h = HTMLParser() >>> print(h.unescape('&pound;682m')) £682m 

सुंदर सूप इकाई रूपांतरण को संभाला है सुंदर सूप 3 में, आपको convertEntities को convertEntities तर्क निर्दिष्ट करना होगा (संग्रहीत डॉक्स के 'इकाई रूपांतरण' अनुभाग देखें) सुंदर सूप में 4, संस्थाओं को स्वचालित रूप से डीकोड हो जाता है

सुंदर सूप 3

 >>> from BeautifulSoup import BeautifulSoup >>> BeautifulSoup("<p>&pound;682m</p>", ... convertEntities=BeautifulSoup.HTML_ENTITIES) <p>£682m</p> 

सुंदर सूप 4

 >>> from bs4 import BeautifulSoup >>> BeautifulSoup("<p>&pound;682m</p>") <html><body><p>£682m</p></body></html> 

आप replace_entities w3lib.html लाइब्रेरी से उपयोग कर सकते हैं

 In [202]: from w3lib.html import replace_entities In [203]: replace_entities("&pound;682m") Out[203]: u'\xa3682m' In [204]: print replace_entities("&pound;682m") £682m 

सुंदर सूप 4 आपको अपने आउटपुट के लिए फॉर्मेटर सेट करने की अनुमति देता है

यदि आप formatter=None में पास करते हैं, तो सुंदर सूप आउटपुट पर बिल्कुल तार संशोधित नहीं करेगा। यह सबसे तेज़ विकल्प है, लेकिन ये सुंदर सूप को अमान्य एचटीएमएल / एक्सएमएल उत्पन्न कर सकते हैं, जैसे इन उदाहरणों में:

 print(soup.prettify(formatter=None)) # <html> # <body> # <p> # Il a dit <<Sacré bleu!>> # </p> # </body> # </html> link_soup = BeautifulSoup('<a href="http://example.com/?foo=val1&bar=val2">A link</a>') print(link_soup.a.encode(formatter=None)) # <a href="http://example.com/?foo=val1&bar=val2">A link</a> 

यह शायद यहाँ प्रासंगिक नहीं है लेकिन एक पूरे दस्तावेज़ से इन HTML तत्वों को खत्म करने के लिए, आप ऐसा कुछ कर सकते हैं: (दस्तावेज = पृष्ठ मान लें और कृपया मैला कोड को माफ कर दो, लेकिन अगर आपके पास यह विचार है कि इसे बेहतर कैसे करें, मैं सभी कानों – I इस)।

 import re import HTMLParser regexp = "&.+?;" list_of_html = re.findall(regexp, page) #finds all html entites in page for e in list_of_html: h = HTMLParser.HTMLParser() unescaped = h.unescape(e) #finds the unescaped value of the html entity page = page.replace(e, unescaped) #replaces html entity with unescaped value