python-3.x - 试图将列表的内容写入 xml
问题描述
我有 3 个长度相同的列表,我正在尝试将它们写入 xml 文件,如下所示:
import xml.etree.ElementTree as ET
import re
title_list = ['title1', 'title2', 'title3']
date_list = ['date1', 'date2', 'date3']
text_list = ['text1', 'text2', 'text3']
book = ET.Element('book')
for e in zip(title_list, date_list, text_list):
book = ET.Element('book')
article = ET.SubElement(book, 'article')
title = ET.SubElement(article, 'title')
date = ET.SubElement(article, 'date')
text = ET.SubElement(article, 'text')
title.text = e[0]
date.text = e[1]
text.text = e[2]
tree_out = ET.ElementTree(book)
tree_out.write('test.xml')
我的输出(氧气中的“漂亮打印”):
<book>
<article>
<title>title3</title>
<date>date3</date>
<text>text3</text>
</article>
</book>
但我想拥有:
<book>
<article>
<title>title1</title>
<date>date1</date>
<text>text1</text>
</article>
<article>
<title>title2</title>
<date>date2</date>
<text>text2</text>
</article>
<article>
<title>title3</title>
<date>date3</date>
<text>text3</text>
</article>
</book>
我怎样才能得到整个输出?我在这里读了很多书,但对我没有用。请用简单的术语解释一下,因为我对这个库和 xml 很陌生
解决方案
在您的for
循环中,您重新定义book
,以便每次迭代都会覆盖它。
删除它,你应该得到你正在寻找的结果......
import xml.etree.ElementTree as ET
title_list = ['title1', 'title2', 'title3']
date_list = ['date1', 'date2', 'date3']
text_list = ['text1', 'text2', 'text3']
book = ET.Element('book')
for e in zip(title_list, date_list, text_list):
# book = ET.Element('book') # <-- REMOVE THIS LINE
article = ET.SubElement(book, 'article')
title = ET.SubElement(article, 'title')
date = ET.SubElement(article, 'date')
text = ET.SubElement(article, 'text')
title.text = e[0]
date.text = e[1]
text.text = e[2]
tree_out = ET.ElementTree(book)
tree_out.write('test.xml')
推荐阅读
- ruby-on-rails - 同一个模型的多个 has_one 关系
- laravel - 想从 laravel 请求数据生成 pdf
- java - 我们可以在 ENUM 中声明多少个变量
- python - 基于特定数据框列处理异常
- pyspark - 无法使用 spark-avro 在 DataProc Spark 中读取 avro
- python - 在 __init__ 函数内部和函数外部定义变量有什么区别
- c# - 为什么我们需要 Datetime 和 Datetime?
- laravel - Laravel 在 git pull 后不显示图标
- asp.net-mvc-5 - 如何在 MVC5 中创建角色并分配给用户
- angular - 如何以最简单的方式将 Mat-Datepicker 日期格式更改为 DD/MM/YYYY?