我有一个 XML 文件,其结构类似于以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<drugbank xmlns="http://www.drugbank.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.drugbank.ca http://www.drugbank.ca/docs/drugbank.xsd" version="5.0" exported-on="2017-12-20">
<drug type="biotech" created="2005-06-13" updated="2017-11-06">
<drugbank-id primary="true">DB00001</drugbank-id>
<drugbank-id>BTD00024</drugbank-id>
<drugbank-id>BIOD00024</drugbank-id>
<cas-number>138068-37-8</cas-number>
<name>Lepirudin</name>
</drug>
<drug type="biotech" created="2005-06-13" updated="2017-11-06">
<drugbank-id primary="true">DB00045</drugbank-id>
<drugbank-id>BTD00054</drugbank-id>
<drugbank-id>BIOD00054</drugbank-id>
<cas-number>205923-56-4</cas-number>
<name>Lyme disease vaccine (recombinant OspA)</name>
</drug>
</drugbank>
我正在尝试使用 Python 3 的 cElementTree 模块。我想提取此 XML 中每种药物的名称,为此我编写了以下代码:
import xml.etree.cElementTree as ET
tree = ET.parse('fulldatabase.xml')
drugbank = tree.getroot()
print(drugbank.tag)
for drug in drugbank:
print(drug.find('name').text)
我得到的错误是AttributeError: 'NoneType' object has no attribute 'text'
我也尝试过检查,但 OP 在其中写的答案对我不起作用。有什么方法可以让每种药物都消失name
。cas-number
我已经尝试了一些组合,比如findall()
在 for 循环条件中删除,但即使在那时,事情也对我不起作用。