gpt4 book ai didi

xml - 如何将以下标签中的所有文本项收集到名称为键,年份为值的字典中?

转载 作者:行者123 更新时间:2023-12-03 16:56:06 26 4
gpt4 key购买 nike

我一直在尝试将每个电影标签内的所有标签的值(分别)放入具有“名称”的字典中-电影名称作为键,年份作为值。

{"a": 2018 , "b":2017, "c":2017, "d".2016}


我是Stackoverflow的新手,希望我已提供所有详细信息并结识了所有社区
请在此处找到最少的可重现XML代码

<collection>
<movie>
<name>a</name>
<year>2018</year>
</movie>
<movie>
<name>b</name>
<year>2017</year>
</movie>
<movie>
<name>c</name>
<year>2017</year>
</movie>
<movie>
<name>d</name>
<year>2016</year>
</movie>
<movie>
<name></name>
<year></year>
</movie>
</collection>


我已经尝试过使用ElementTree和XPath进行多种操作,但无法如上所述获取值。
如果有的话,我能够一起获取name标记中的所有值和year标记中的所有值-绝对没有用,因此我不在这里发布这些代码。
这是输出我能够得到...

[2018,2017,2017,2016]
[a,b,c,d]


但是,如果下面的标签具有不完整的值,则这是没有用的

<movie>
<name>d</name>
</year>
</movie>
<movie>
<name></name>
<year>2016</year>
</movie>

最佳答案

您可以使用BeautifulSoup实现xml解析

如果已安装pip,则可以运行以下命令来安装软件包:

pip3 install beautifulsoup4


这是代码:

from bs4 import BeautifulSoup
from pprint import pformat

xmlstring = """
<collection>
<movie>
<name>a</name>
<year>2018</year>
</movie>
<movie>
<name>b</name>
<year>2017</year>
</movie>
<movie>
<name>c</name>
<year>2017</year>
</movie>
<movie>
<name>d</name>
<year>2016</year>
</movie>
<movie>
<name></name>
<year></year>
</movie>
</collection>"""

soup = BeautifulSoup(xmlstring, "lxml")

movies = soup.select('movie')

my_dict = {}
for movie in movies:
key = movie.select_one('name').text
value = movie.select_one('year').text
if key != '':
my_dict.update({key: value})
print(pformat(my_dict))


输出:

{'a': '2018', 'b': '2017', 'c': '2017', 'd': '2016'}


要从文件读取,可以使用以下命令:

with open("file_name.xml") as fp:
xmlstring = fp.read()

关于xml - 如何将以下标签中的所有文本项收集到名称为键,年份为值的字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024276/

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