gpt4 book ai didi

python - 使用 BeautifulSoup 迭代 XML 以提取特定标签并存储在变量中

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:25 31 4
gpt4 key购买 nike

我对编程还很陌生,一直在努力寻找解决方案,但我能找到的只是零碎的东西,没有真正的运气把它们放在一起。

我正在尝试使用 BeautifulSoup4 中的 python 来抓取一些 xml 并将文本值存储在变量中特定标记之间。数据来自医学生培训计划,现在需要的一切都必须手动找到。所以我试图通过一个抓取程序来提高效率。

例如,假设我正在查看此类测试数据以进行实验:

<AllergyList>
<Allergy>
<Deleted>n</Deleted>
<Status>
<Active/>
</Status>
<ExternalID/>
<Patient>
<ExternalID/>
<FirstName>Testcase</FirstName>
<LastName>casetest</LastName>
</Patient>
<Allergen>
<Name>Flagyl (metronidazole)</Name>
<Drug>
<NDCID>00025182151,00025182131,00025182150</NDCID>
</Drug>
</Allergen>
<Reaction>difficulty breathing</Reaction>
<OnsetDate>02/02/2013</OnsetDate>
</Allergy>
<Allergy>
<Deleted>n</Deleted>
<Status>
<Active/>
</Status>
<ExternalID/>
<Patient>
<ExternalID/>
<FirstName>Testcase</FirstName>
<LastName>casetest</LastName>
</Patient>
<Allergen>
<Name>Bactrim (sulfamethoxazole-trimethoprim)</Name>
<Drug>
<NDCID>13310014501,49999023220</NDCID>
</Drug>
</Allergen>
<Reaction>swelling</Reaction>
<OnsetDate>05/03/2002</OnsetDate>
</Allergy>
<Number>2</Number>
</AllergyList>

我一直在尝试从多个 <Name> 标签之间提取 <Allergen> 标签,以及从 <Onsetdate><Reaction> 标签之间提取相应数据,同时将提取结果存储到相应变量中。

例如,我想提取 Flagyl (metronidazole)difficulty breathing02/02/2013 ,然后是 Bactrim (sulfamethoxazole-trimethoprim)swelling05/03/2002 等等,同时将它们放在我以后可以使用的单独变量中。

<Allergen> 标签中提取第一组数据很容易,但我无法弄清楚如何遍历 xml 并将提取的数据存储到变量中。我一直在尝试在将数据存储到数组或列表中时使用 for 循环,但我一直在编写它的方式我总是一遍又一遍地提取相同的数据,具体取决于我从 len() 函数计算的迭代次数并且此后未能将其中任何一个存储到数组中。

我已经为此绞尽脑汁一段时间了,我想我可能不是那么聪明,所以非常感谢任何帮助,甚至是为我指明正确的方向。

最佳答案

这似乎是一项简单的任务,因为没有很多嵌套标签:

from bs4 import BeautifulSoup
import sys

soup = BeautifulSoup(open(sys.argv[1], 'r'), 'xml')

allergies = []
for allergy in soup.find_all('Allergy'):
d = {
'name': allergy.Allergen.Name.string,
'reaction': allergy.Reaction.string,
'on_set_date': allergy.OnsetDate.string,
}
allergies.append(d)

## Use 'allergies' array of dictionaries as you want.
## Example:
print(allergies[1]['reaction'])

xml 文件作为参数运行它:

python3 script.py xmlfile

这个测试产生:

swelling

关于python - 使用 BeautifulSoup 迭代 XML 以提取特定标签并存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19861489/

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