我正在解析以下XML以获取一些值并将它们存储在文件中,我能够获取属性,但是当我尝试提取所需的值时,我得到了none
当使用x.get()
时,就像在示例中一样,您能帮我理解发生了什么吗?我怎样才能得到我需要的值
这是xml的一个示例:
<?xml version='1.0' encoding='UTF-8'?>
<sbml xmlns:fbc="http://www.sbml.org/sbml/level3/version1/fbc/version2" level=3 sboTerm="SBO:0000624" version="1" xmlns=""http://www.sbml.org/sbml/level3/version1/core" fbc:required="false">
<model id="iJR904" fbc:strict="true">
<listOfUnitDefinitions> fobo </listOfUnitDefinitions>
<fbc:listOfObjectives fbc:activeObjective="obj> Objectives </fbc:listOfObjectives>
<listOfParameters>
<parameter constant="true" id="cobra_default_lb" sboTerm="SBO:0000626" units="mmol_per_gDW_per_hr" value="-999999" />
<parameter constant="true" id="cobra_default_ub" sboTerm="SBO:0000626" units="mmol_per_gDW_per_hr" value="999999" />
<parameter constant="true" id="cobra_0_bound" sboTerm="SBO:0000626" units="mmol_per_gDW_per_hr" value="0" />
<parameter constant="true" id="R_ATPM_upper_bound" sboTerm="SBO:0000625" units="mmol_per_gDW_per_hr" value="7.6" />
<parameter constant="true" id="R_ATPM_lower_bound" sboTerm="SBO:0000625" units="mmol_per_gDW_per_hr" value="7.6" />
<parameter constant="true" id="R_EX_glc_DASH_D_e_lower_bound" sboTerm="SBO:0000625" units="mmol_per_gDW_per_hr" value="-10" />
<parameter constant="true" id="R_EX_o2_e_lower_bound" sboTerm="SBO:0000625" units="mmol_per_gDW_per_hr" value="-20" />
</listOfParameters>
<listOfCompartments> Compartments</listOfCompartments>
<listOfSpecies> Species</listOfSpecies>
<fbc:listOfGeneProducts> Products </fbc:listOfGeneProducts>
<listOfReactions>
<reaction fast="false" id="R_12PPDt" name="S-Propane-1,2-diol facilitated transport" reversible="true" fbc:lowerFluxBound="cobra_default_lb" fbc:upperFluxBound="cobra_default_ub">
</reaction>
<reaction fast="false" id="R_2DGLCNRx" name="2-dehydro-D-gluconate reductase (NADH)" reversible="false" fbc:lowerFluxBound="cobra_0_bound" fbc:upperFluxBound="cobra_default_ub">
</reaction>
</listOfReactions>
</model>
</sbml>
我用Python编写的代码如下
import xml.etree.ElementTree as ET
mytree = ET.parse('iJR904.xml')
myroot = mytree.getroot()
mychild = myroot[0]
for a in range(len(mychild[6])):
print(mychild[6][a].get('id'),':',mychild[6][a].get('fbc:lowerFluxBound'))
它打印:
R_12PPDt : none
R_2DGLCNRx : none
因为我想要的不是真正的文本,所以我想我可以使用一些if
如下:
for a in range(len(mychild[6])):
if mychild[6][a].get('fbc:lowerFluxBound') == 'cobra_default_lb':
print(mychild[6][a].get('id'),':',-999999)
elif mychild[6][a].get('fbc:lowerFluxBound') == 'cobra_0_bound':
print(mychild[6][a].get('id'),':',0)
你是一个很好的研究者,能够找出问题所在。这应该是由XML语法中的名称空间引起的。以下库忽略名称空间的语法,并将其视为普通字符串
结果:
相关问题 更多 >
编程相关推荐