gpt4 book ai didi

python - 将 XML 文件转换为 CSV

转载 作者:行者123 更新时间:2023-12-01 05:01:23 27 4
gpt4 key购买 nike

我有一个 XML 文件,如下所示:

<Organism>
<Name>Bacillus halodurans C-125</Name>
<Enzyme>M.BhaII</Enzyme>
<Motif>GGCC</Motif>
<Enzyme>M1.BhaI</Enzyme>
<Motif>GCATC</Motif>
<Enzyme>M2.BhaI</Enzyme>
<Motif>GCATC</Motif>
</Organism>
<Organism>
<Name>Bacteroides eggerthii 1_2_48FAA</Name>
</Organism>

我正在尝试将其写入 CSV 文件,如下所示:

Bacillus halodurans, GGCC
Bacillus halodurans, GCATC
Bacillus halodurans, GCATC
Bacteriodes,

我解决这个问题的方法是创建一个元组列表,其中包含有机体名称主题。我使用 ElementTree 模块尝试了此操作:

import xml.etree.ElementTree as ET

tree = ET.parse('file.xml')
rebase = tree.getroot()

list = []

for organisms in rebase.findall('Organism'):
name = organisms.find('Name').text
for each_organism in organisms.findall('Motif'):
try:
motif = organisms.find('Motif').text
print name, motif
except AttributeError:
print name

但是我得到的输出如下所示:

Bacillus halodurans, GGCC
Bacillus halodurans, GGCC
Bacillus halodurans, GGCC

仅记录第一个主题。这是我第一次使用 ElementTree,所以有点令人困惑。任何帮助将不胜感激。

我不需要写入 CSV 文件方面的帮助。

最佳答案

您唯一需要修复的是替换:

motif = organisms.find('Motif').text

与:

motif = each_organism.text

您已经在 Organism 内迭代 Motif 节点。 each_organism 循环变量保存 Motif 标记的值。

<小时/>

我还会更改变量名称以避免混淆。另外,我认为在 Motif 标记的循环内不需要 try/except 。如果可能缺少 name 标签,您可以按照“请求宽恕,而不是许可”方法并捕获错误:

for organism in rebase.findall('Organism'):
try:
name = organism.find('Name').text
except AttributeError:
continue

for motif in organism.findall('Motif'):
motif = motif.text
print name, motif

关于python - 将 XML 文件转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26078806/

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