【问题标题】:Parse multiple nested XML to Panda Data frame Table in Python在 Python 中将多个嵌套的 XML 解析为 Pandas 数据框表
【发布时间】:2020-09-22 18:53:21
【问题描述】:
<?xml version='1.0' encoding='UTF-8' ?>
  <DOC>
    <INFO1
      A = "1"
      B = "2"
      C = "3"
    >
      <INFO12
        D = "a"
      >
      </INFO12>
    </INFO1>
    <INFO2
      E = "4"
      F = "5"
      G = "6"
    >
      <INFO21
        H = "b"
      >
      </INFO21>
    </INFO2>
 </DOC>
TestFile="test.xml"
ttree = etree.parse(TestFile)
troot = ttree.getroot()
df_cols =["Col1", "Col2", "Col3", "Col4","Col5","Col6"
              "Col7", "Col8"]
df = pd.DataFrame(columns =df_cols)

for i in troot: 
    df = df.append(pd.Series([i.get('A'), i.get('B'),i.get('C'), i.get('D'),
                                     i.get('E'), i.get('F'),i.get('G'),i.get('H')],
                          index = df_cols), ignore_index=True)
        
df.head()

https://i.stack.imgur.com/pvBnm.png

问题:我正在尝试使用 xml.etree.cElementTree 库将 XML 解析为 Python 中的数据框。但是如何使结果在一行中并包括 a 和 b,所以将是 '1, 2, 3, a, 4, 5, 6, b'。 谢谢!

【问题讨论】:

  • 那么 XML 代表数据框中的一行?如果是这样,您可以扩展以显示多行吗?

标签: python xml parsing


【解决方案1】:

你可以使用其他库吗?

from simplified_scrapy import SimplifiedDoc

html = '''
<?xml version='1.0' encoding='UTF-8' ?>
  <DOC>
    <INFO1
      A = "1"
      B = "2"
      C = "3"
    >
      <INFO12
        D = "a"
      >
      </INFO12>
    </INFO1>
    <INFO2
      E = "4"
      F = "5"
      G = "6"
    >
      <INFO21
        H = "b"
      >
      </INFO21>
    </INFO2>
 </DOC>
'''
doc = SimplifiedDoc(html)
infos = doc.DOC.children
row = [infos[0].A,infos[0].B,infos[0].C,infos[0].child.D,
    infos[1].E,infos[1].F,infos[1].G,infos[1].child.H]
print (row)

结果:

['1', '2', '3', 'a', '4', '5', '6', 'b']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多