मैं एक्सएमएल टैग के बीच टेक्स्ट प्राप्त करने की कोशिश कर रहा हूं। इसके बारे में कई पोस्ट हैं, लेकिन मुझे समझ में नहीं आता कि इसे एक वेरिएबल में कैसे सेव किया जाए। नीचे दिया गया कोड मुझे जो चाहिए उसे प्रिंट करता है, लेकिन जैसे ही मैं "प्रिंट" को "रिटर्न" से बदल देता हूं, यह इस टेक्स्ट को वेरिएबल में सेव नहीं करता है। मुझे लगता है कि मैं यहाँ कुछ बहुत ही सरल याद कर रहा हूँ।

from xml.sax import make_parser, handler

line = '<text><p><s id="1">Some text <someothertag>some more text</someothertag></s></p></text>'
class extract_text(handler.ContentHandler):
    def characters(self, data):
        print data.strip()

parser = make_parser()
parser.setContentHandler(extract_text())
parser.feed(line)

तो मैं एक वैरिएबल रखना चाहता हूं, जो "कुछ टेक्स्ट कुछ और टेक्स्ट" के बराबर होगा किसी भी विचार का बहुत स्वागत है!

0
student 20 मार्च 2018, 19:39

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप हैंडलर से मूल्य वापस करते हैं तो इसे कहीं भी संग्रहीत नहीं किया जाएगा। आपको इसे स्वयं करने की आवश्यकता है:

result = ''

class extract_text(handler.ContentHandler):
    def characters(self, data):
        global result
        result += data.strip() + '\n'

parser = make_parser()
parser.setContentHandler(extract_text())
parser.feed(line)

print(result)
1
Roman Konoval 20 मार्च 2018, 16:49