नीचे दिया गया सरल कोड कुछ तत्वों और उनकी विशेषताओं को डेटाफ़्रेम में प्रिंट करता है। यह एक एक्सएमएल फाइलों के माध्यम से पुनरावृति करता है, इन तत्वों की तलाश करता है और बस उन्हें प्रिंट करता है

कोड

import xml.etree.ElementTree as ET
import pandas as pd
tree = ET.parse('1last.xml')
root = tree.getroot()

for neighbor in root.iter('Description'):
    print(neighbor.attrib, neighbor.text)
for neighbor in root.iter('SetData'):
    print(neighbor.attrib)
for neighbor in root.iter('FileX'):
    print(neighbor.attrib) 
for neighbor in root.iter('FileY'):
    print(neighbor.attrib)

उत्पादन

Here

मैं आउटपुट को एक्सेल टेबल फॉर्म में निर्यात करना चाहता हूं लेकिन यह काम नहीं कर रहा है मैंने यह कोशिश की है

export_excel = root.to_excel (r'C:\Users\fsdf.LAPTOP-E8A1PPIN\Desktop\test\export_dataframe.xlsx', index = None, header=True)

लेकिन मुझे यह कहते हुए त्रुटि मिली “AttributeError: 'xml.etree.ElementTree.Element' ऑब्जेक्ट में कोई विशेषता नहीं है 'to_excel'

यह मेरी एक्सएमएल फाइल है

<?xml version="1.0" encoding="utf-8"?>
<ProjectData>
<FINAL>
    <START id="ID0001" service_code="0x5196">
      <Docs Docs_type="START">
        <Rational>225196</Rational>
        <Qualify>6251960000A0DE</Qualify>
      </Docs>
      <Description num="1213f2312">The parameter</Description>
      <SetFile dg="" dg_id="">
        <SetData value="32" />
      </SetFile>
    </START>
    <START id="DG0003" service_code="0x517B">
      <Docs Docs_type="START">
        <Rational>23423</Rational>
        <Qualify>342342</Qualify>
      </Docs>
      <Description num="3423423f3423">The third</Description>
      <SetFile dg="" dg_id="">
        <FileX dg="" axis_pts="2" name="" num="" dg_id="" />
        <FileY unit="" axis_pts="20" name="TOOLS" text_id="23423" unit_id="" />
        <SetData x="E1" value="21259" />
        <SetData x="E2" value="0" />
      </SetFile>
    </START>
    <START id="ID0048" service_code="0x5198">
      <RawData rawdata_type="OPDATA">
        <Request>225198</Request>
        <Response>343243324234234</Response>
      </RawData>
      <Meaning text_id="434234234">The forth</Meaning>
      <ValueDataset unit="m" unit_id="FEDS">
        <FileX dg="kg" discrete="false" axis_pts="19" name="weight" text_id="SDF3" unit_id="SDGFDS" />
        <SetData xin="sdf" xax="233" value="323" />
        <SetData xin="123" xax="213" value="232" />
        <SetData xin="2321" xax="232" value="23" />
      </ValueDataset>
    </START>
</FINAL>
</ProjectData>

यह वही है जो मैं चाहता हूं कि तालिका इस तरह दिखे। यहां छवि विवरण दर्ज करें

0
user12325998 23 नवम्बर 2019, 19:34

1 उत्तर

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

एक्सेल फ़ाइल को सीधे लिखने के लिए openpyxl जैसे पुस्तकालय का उपयोग करने का एक तरीका होगा। निम्नलिखित दिखाता है कि यह कैसे किया जा सकता है:

import openpyxl    
from bs4 import BeautifulSoup


with open('1last.xml') as f_input:
    soup = BeautifulSoup(f_input, 'lxml')

wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Sheet1"

ws.append(["Description", "num", "text"])

for description in soup.find_all("description"):
    ws.append(["", description['num'], description.text])

ws.append(["SetData", "x", "value", "xin", "xax"])

for setdata in soup.find_all("setdata"):
    ws.append(["", setdata.get('x', ''), setdata.get('value', ''), setdata.get('xin', ''), setdata.get('xax', '')])

wb.save(filename="1last.xlsx")

यह इस तरह दिखने वाली एक एक्सेल फाइल बनाएगा:

Excel screenshot

0
Martin Evans 4 पद 2019, 13:31