首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python解析xml --根据祖父母的兄弟姐妹选择子代

使用python解析xml --根据祖父母的兄弟姐妹选择子代
EN

Stack Overflow用户
提问于 2013-03-28 02:12:47
回答 1查看 170关注 0票数 2

我正在尝试使用ElementTree来解析xml文件。给定下面的xml,我需要向文件中写入'chain_id‘(在标题’m‘下)和'name’(在标题‘r’下),但前提是满足以下条件: 1.)“‘css”(在标题“i”下)不是-0和2。)‘'bsa’>0

当满足第二个条件时,我可以跟踪“名称”:

代码语言:javascript
复制
for r in root.iter('r'):
        name = r.find('name').text
        bsa = r.find('bsa').text
        if eval(bsa) > 0:
            print name

但我最终得到了很多我不需要的名字,因为我不知道如何根据第一个条件来实现这一点。我已经研究过Xpath,但我在实现它时遇到了困难。

总而言之,我只对'm‘的子代和曾孙感兴趣,如果'm’('css')的兄弟有一定的值。

xml文件相当大,有> 20‘i,每个'i’至少有两个'm‘,每个’m‘有>100’r。

我更喜欢用标准的python方法(而不是lxml或漂亮的石汤)来做这件事。

代码语言:javascript
复制
<pi>
  <pe>
    <ni>20</ni>
    <i>
      <id>1</id>
      <css>-0</css>
      <m>
        <id>1</id>
        <chain_id>B</chain_id>
        <int_nres>19</int_nres>
        <rs>
          <r>
            <ser_no>1</ser_no>
            <name>MET</name>
            <seq_num>0</seq_num>
            <asa>157.15526405</asa>
            <bsa>0</bsa>
          </r>
          <r>
           .
           .
           .            
          </r>  
      <m>
        .
        .
        .
      </m>
    </i>
    <i>
      .
      .
      .
    </i>
  </pe>
</pi>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 02:30:42

代码语言:javascript
复制
myxml=ET.parse('path_to_yourxml')
for elem in myxml.getroot().findall('pi/pe/i'):
    if elem.find('css').text!='-0':
        for elem1 in elem.findall('m'):
            if eval(elem1.find('rs/r/bsa').text)>0:
                print elem1.find('rs/r/name').text
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15666315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档