我有一个defaultdict(列表)..所以,以下格式的数据结构:
1:[1,2,3,4,5]
2:[2,3,4]
我想生成以下xml
<html>
<page>
<src>1</src>
<links>
<link>1</link>
<link>2</link>
...
<link>5</link>
</links>
</page>
<page>
<src>2</src>
<links>
<link>2</link>
<link>3</link>
<link>4</link>
</links>
</page>
<html>
然后将缩进的xml写入文件
答案 0 :(得分:1)
您可以使用BeautifulSoup:
from bs4 import Tag
d = {1: [1,2,3,4,5], 2: [2,3,4]}
root = Tag(name='html')
for key, values in d.iteritems():
page = Tag(name='page')
src = Tag(name='src')
src.string = str(key)
page.append(src)
links = Tag(name='links')
for value in values:
link = Tag(name='link')
link.string = str(value)
links.append(link)
page.append(links)
root.append(page)
print root.prettify()
打印:
<html>
<page>
<src>
1
</src>
<links>
<link>
1
</link>
<link>
2
</link>
<link>
3
</link>
<link>
4
</link>
<link>
5
</link>
</links>
</page>
<page>
<src>
2
</src>
<links>
<link>
2
</link>
<link>
3
</link>
<link>
4
</link>
</links>
</page>
</html>
答案 1 :(得分:0)
您还可以定义jinja2模板并进行渲染:
from jinja2 import Template
data = {1:[1,2,3,4,5], 2:[2,3,4]}
html = """<html>
{% for key, values in data.iteritems() %}
<page>
<src>{{ key }}</src>
<links>
{% for value in values %}
<link>{{ value }}</link>
{% endfor %}
</links>
</page>
{% endfor %}
<html>"""
template = Template(html)
print template.render(data=data)
打印:
<html>
<page>
<src>1</src>
<links>
<link>1</link>
<link>2</link>
<link>3</link>
<link>4</link>
<link>5</link>
</links>
</page>
<page>
<src>2</src>
<links>
<link>2</link>
<link>3</link>
<link>4</link>
</links>
</page>
<html>