gpt4 book ai didi

python - 如何从 Python 中的 XML 标签中获取值?

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:50 35 4
gpt4 key购买 nike

我有如下的 XML 文件。

<?xml version="1.0" encoding="UTF-8"?><searching>
<query>query01</query>
<document id="0">
<title>lord of the rings.</title>
<snippet>
this is a snippet of a document.
</snippet>
<url>http://www.google.com/</url>
</document>
<document id="1">
<title>harry potter.</title>
<snippet>
this is a snippet of a document.
</snippet>
<url>http://www.google.com/</url>
</document>
........ #and other documents .....

<group id="0" size="298" score="145">
<title>
<phrase>GROUP A</phrase>
</title>
<document refid="0"/>
<document refid="1"/>
<document refid="84"/>
</group>
<group id="0" size="298" score="55">
<title>
<phrase>GROUP B</phrase>
</title>
<document refid="2"/>
<document refid="13"/>
<document refid="3"/>
</group>
</<searching>>

我想获取上面的组名以及每个组中的文档 ID(及其标题)是什么。我的想法是将文档 ID 和文档标题存储到字典中:

import codecs
documentID = {}
group = {}

myfile = codecs.open("file.xml", mode = 'r', encoding = "utf8")
for line in myfile:
line = line.strip()
#get id from tags
#get title from tag
#store in documentID


#get group name and document reference

此外,我已经尝试过 BeautifulSoup,但对它很陌生。我不知道该怎么做。这是我正在执行的代码。

def outputCluster(rFile):
documentInReadFile = {} #dictionary to store all document in readFile

myfile = codecs.open(rFile, mode='r', encoding="utf8")
soup = BeautifulSoup(myfile)
# print all text in readFile:
# print soup.prettify()

# print soup.find+_all('title')

outputCluster("file.xml")

请给我一些建议。谢谢。

最佳答案

前几位发帖者有权利。可以在此处找到 etree 文档:

https://docs.python.org/2/library/xml.etree.elementtree.html#module-xml.etree.ElementTree

并且可以帮助你。下面是一个可以解决问题的代码示例(部分取自上述链接):

import xml.etree.ElementTree as ET
tree = ET.parse('your_file.xml')
root = tree.getroot()

for group in root.findall('group'):
title = group.find('title')
titlephrase = title.find('phrase').text
for doc in group.findall('document'):
refid = doc.get('refid')

或者,如果您希望将 ID 存储在组标签中,您可以使用 id = group.get('id') 而不是搜索所有 refid

关于python - 如何从 Python 中的 XML 标签中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24612582/

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