मैं ओपनऑफिस ओडीएस स्प्रेडशीट में सामग्री का विश्लेषण करने की कोशिश कर रहा हूं। ओडीएस प्रारूप अनिवार्य रूप से केवल एक दस्तावेज के साथ एक ज़िपफाइल है। स्प्रेडशीट की सामग्री 'content.xml' में संग्रहीत है।मैं xx नेमस्पेस का उपयोग lxml में ढूंढ/ढूंढने के साथ कैसे करूं?
table = root.find('.//{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table')
हम भी पंक्तियों के लिए सीधे जा सकते हैं:
rows = root.findall('.//{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table-row')
अलग-अलग तत्वों नामस्थान के बारे में पता:
import zipfile
from lxml import etree
zf = zipfile.ZipFile('spreadsheet.ods')
root = etree.parse(zf.open('content.xml'))
स्प्रैडशीट की सामग्री में एक सेल में है
>>> table.nsmap['table']
'urn:oasis:names:tc:opendocument:xmlns:table:1.0'
कैसे कर मैं नेमस्पेस का उपयोग सीधे ढूंढने/ढूंढने में करता हूं?
स्पष्ट समाधान काम नहीं करता।
मेज से पंक्तियां प्राप्त करने की कोशिश कर रहा:
>>> root.findall('.//table:table')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 1792, in lxml.etree._ElementTree.findall (src/lxml/lxml.etree.c:41770)
File "lxml.etree.pyx", line 1297, in lxml.etree._Element.findall (src/lxml/lxml.etree.c:37027)
File "/usr/lib/python2.6/dist-packages/lxml/_elementpath.py", line 225, in findall
return list(iterfind(elem, path))
File "/usr/lib/python2.6/dist-packages/lxml/_elementpath.py", line 200, in iterfind
selector = _build_path_iterator(path)
File "/usr/lib/python2.6/dist-packages/lxml/_elementpath.py", line 184, in _build_path_iterator
selector.append(ops[token[0]](_next, token))
KeyError: ':'
आप स्प्रेडशीट संसाधित करने OpenOffice के लिए अजगर एपीआई का उपयोग करने की कोशिश की है? – jfs
नमस्ते मैं नामस्थान के साथ तत्वों और विशेषताओं तक पहुंचने के लिए etree.QName का उपयोग कर रहा हूं। नामस्थानों के शब्दकोश की सहायता से यह एक साफ तरीका है, और यह ढूंढने और खोजने के तरीके के साथ भी काम करता है। अधिक जानकारी के लिए कृपया देखें: http://lxml.de/tutorial.html#namespaces –