我正在尝试使用 ElementTree 来解析 xml 文件。鉴于下面的xml,我需要写入文件'chain_id'(在标题'm'下)和'name'(在标题'r'下),但前提是满足以下条件:1.)'css'(在标题'i'下)不是-0,并且2。)'bsa'> 0
当满足第二个标准时,我可以跟踪“名称”:
for r in root.iter('r'):
name = r.find('name').text
bsa = r.find('bsa').text
if eval(bsa) > 0:
print name
但我最终得到了很多我不需要的名字,因为我不知道如何以第一个标准为条件。我已经研究过 Xpath,但我很难实现它。
总而言之,如果“m”(“css”)的兄弟姐妹具有一定的价值,我只对“m”的孩子和曾孙感兴趣。
xml 文件相当大,有 > 20 个“i”,每个“i”至少有两个“m”,每个“m”有 >100 个“r”。
我更喜欢使用标准的 python 方法(不是 lxml 或美丽的石汤)
<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>