繁体   English   中英

使用LXML和Python解析XML

[英]Parsing XML using LXML and Python

我已经阅读了有关堆栈溢出的其他问题,但仍不确定如何继续。 为了简化阅读,我简化了XML文档。

         <event>
            <time>2015-01-30T08:59:00Z</time>
            <homeTeam type="Team1">
              <name>United Arab Emirates</name>
            </homeTeam>
            <awayTeam type="Team2">
              <name>Iraq</name>
            </awayTeam>
            <periods>
              <period lineId="168809488">
                <number>0</number>
                <description>Match</description>
                <cutoffDateTime>2015-01-30T08:59:00Z</cutoffDateTime>
                <moneyLine>
                  <awayPrice>218</awayPrice>
                  <homePrice>148</homePrice>
                  <drawPrice>225</drawPrice>
                </moneyLine>
              </period>
            </periods>
          </event>

XML文件中有几个“事件”元素。 我可以使用tree.getiterator('event')隔离每个人

for elt in tree.getiterator('event'):
    print elt.xpath('./homeTeam/name/text()')
    print elt.xpath('//startDateTime/text()') 

但是,这将产生两个列表。 为了存储到Mysql DB中,我需要每次都将主队名称,客队名称,客队价格,主场价格和平局价格隔离开。

我不确定如何在整个事件中进行迭代,而不用其他列表结尾。 其中一个包含所有时间,一个包含所有主队名称等

任何建议或指示,将不胜感激

当您寻找不同的东西时,您将得到不同的列表,但这应该没问题。 这里的目标不是立即从lxml接口中获取结果,而是稍后获取可以放入mysql数据库的内容,对吗?

如果是这样,只需将zip调用添加到插入过程中就可以了。 例如:

home_teams = elt.xpath('./homeTeam/name/text()')
away_teams = # something
away_prices = # something

full_iterator = zip(home_teams, away_teams, away_prices, etc...)
for values in full_iterator:
    # For example
    mysql.insert(*values)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM