मेरे पास कुछ टैग के साथ अलग-अलग एक्सएमएल फाइलें हैं। जब मैं एक्सएमएल फाइलों से कीवर्ड जोड़ना चाहता हूं तो मैं उन्हें उसी संरचना के साथ जोड़ने में सक्षम नहीं हूं। कीवर्ड सूचियां हैं, इसलिए मुझे उन्हें जोड़ने के लिए सूचियों की एक सूची की आवश्यकता होगी। जब मैंने शब्दकोश दृष्टिकोण की कोशिश की तो मैं प्रति आईडी केवल एक टैग को अनुक्रमित कर रहा था, लेकिन पूरी सूची नहीं।

मैं इसे टुपल्स और ज़िप के साथ करने की कोशिश कर रहा था लेकिन एक ही परिणाम प्राप्त कर रहा था, प्रति आईडी एक टैग।

यह मूल कोड है जिसका उपयोग खोजशब्दों को पुनः प्राप्त करने के लिए किया जाता है।

keywords = [[] for i in range (4)]
for infil in glob.glob( os.path.join(path, '*.xml') ):
   tree = et.parse(infil)
   root = tree.getroot()
   for keyword in root.find(".//keywords"):
           if keyword.text is not None:
                keywords.append(keyword.text)

मैं इस तरह एक आउटपुट रखना चाहता हूं, लेकिन मेरे पास केवल एक सूची थी, सूचियों की सूची नहीं।

 {'symbol': ['CEDAW/SP/1998/1',
 'CEDAW/SP/1998/2',
 'CEDAW/SP/1998/3',
 'CEDAW/SP/1998/4'],
 'jobno': ['N9801528', 'N9802769', 'N9801085', 'N9812464'],
 'dat': ['19980121', '19980206', '19980111', '19980501'],
 'language': ['English', 'English', 'English', 'English'],
 'keywords': [(['AGENDA'],
  ["WOMEN'S STATUS",
  'TREATIES',
  'SIGNATURES, ACCESSIONS, RATIFICATIONS',
  'RESERVATIONS AND DECLARATIONS',
  'GENDER DISCRIMINATION'],
   ['ELECTION OF MEMBERS', 'BIOGRAPHY'],
   ["WOMEN'S RIGHTS", "WOMEN'S STATUS", 'PERIODIC REPORTS'])]}
1
terseason 19 अगस्त 2019, 14:14

1 उत्तर

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

ऐसा लगता है कि आप केवल शीर्ष स्तर की सूची को संलग्न करने के लिए निर्दिष्ट कर रहे हैं। इसलिए जब आप [[], [], [], []].append(1) करते हैं, तो आपको [[], [], [], [], 1] मिलेगा।

आपको आंतरिक सूची निर्दिष्ट करने की आवश्यकता है, जैसे list[i].append(keyword.text), इसलिए आपको किसी तरह से अनुक्रमणिका प्राप्त करने की आवश्यकता होगी।

# make it scalable so it will work even if you add more XML files
paths = glob.glob( os.path.join(path, '*.xml') )
keywords = [[] for i in range(len(paths))

for i in range(len(paths)):
    tree = et.parse(paths[i])
    root = tree.getroot()
    for keyword in root.find(".//keywords"):
        if keyword.text is not None:
            keywords[i].append(keyword.text) # change is here

1
emilanov 19 अगस्त 2019, 11:40