gpt4 book ai didi

python - 用 python 解析 xml - 根据祖 parent 的 sibling 选择 child

转载 作者:太空宇宙 更新时间:2023-11-04 06:16:02 25 4
gpt4 key购买 nike

我正在尝试使用 ElementTree 来解析 xml 文件。鉴于下面的 xml,我需要写入文件“chain_id”(在标题“m”下)和“名称”(在标题“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”)的 sibling 具有一定的值(value),我只对“m”的 child 和曾孙感兴趣。

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>

最佳答案

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

关于python - 用 python 解析 xml - 根据祖 parent 的 sibling 选择 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com