【发布时间】:2018-11-10 09:35:28
【问题描述】:
我正在使用 Jupyer 笔记本,运行 python 3。我的任务是从 XML 文件中提取数据并将其转换为 json 格式(甚至可能将 json 保存在 output.dat 文件中)。我正在使用 BeautifulSoup 浏览节点。我有以下数据:
<?xml version='1.0' encoding='UTF-8'?>
<Terms>
<Term>
<Title>.177 (4.5mm) Airgun</Title>
<Description>The standard airgun calibre for international target
shooting.</Description>
<RelatedTerms>
<Term>
<Title>Shooting sport equipment</Title>
<Relationship>Narrower Term</Relationship>
</Term>
</RelatedTerms>
</Term>
<Term>
<Title>1 Kilometre Time Trial</Title>
<Description>test2</Description>
<RelatedTerms>
<Term>
<Title>1 Kilometre TT</Title>
<Relationship>Used For</Relationship>
</Term>
<Term>
<Title>1km Time Trial</Title>
<Relationship>Used For</Relationship>
</Term>
<Term>
<Title>1km Time Trial</Title>
<Relationship>Used For</Relationship>
</Term>
<Term>
<Title>1km TT</Title>
<Relationship>Used For</Relationship>
</Term>
<Term>
<Title>One km Time Trial</Title>
<Relationship>Used For</Relationship>
</Term>
</RelatedTerms>
</Term>
这是我在 JSON 中所期望的以下输出:
{
"thesaurus": [
{
"Description": "The standard airgun calibre for international target shooting.",
"RelatedTerms": [
{
"Relationship": "Narrower Term",
"Title": "Shooting sport equipment"
}
],
"Title": ".177 (4.5mm) Airgun"
},
{
"Description": "test2",
"RelatedTerms": [
{
"Relationship": "Used For",
"Title": "1 Kilometre TT"
},
{
"Relationship": "Used For",
"Title": "1km Time Trial"
},
{
"Relationship": "Used For",
"Title": "1km Time Trial"
},
{
"Relationship": "Used For",
"Title": "1km TT"
},
{
"Relationship": "Used For",
"Title": "One km Time Trial"
}
],
"Title": "1 Kilometre Time Trial"
},
我正在浏览标签,以便创建字典,如输出示例中所示。由于我是文本抓取的新手,这非常令人沮丧。
我能够使用以下代码提取“描述”标签:
xml_file = './xml.xml'
btree = BeautifulSoup(open(xml_file, encoding="utf8"),"xml")
elements = btree.find_all('Description')
descriptionTag = []
for element in elements:
descriptionTag.append(element.text)
与上面的描述标签一样,我不确定如何为存储在“RelatedTerms”标签之间的信息创建一个字典列表。 理想情况下,我会将所有标签解析为数据帧,然后将数据转换为 JSON 格式。
那么,请有人帮忙确定如何从“RelatedTerms”标签中提取信息。
【问题讨论】:
标签: json xml beautifulsoup