gpt4 book ai didi

python - 用etree追加多个元素,如何将每个元素写在新行上?

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:24 26 4
gpt4 key购买 nike

我使用 Python 和 etree 将一些元素添加到 graphml 文件中的某些节点。我有两个字符串列表,其中包含一些我想写入我的 .graphml 文件的数据。我已经设法做到了这一点,但是当使用 .append() 函数时,它将两个新元素写入同一行。有没有一种好方法可以在将这些新元素写入同一个循环中时在它们之间实现行分隔?

我有以下数据集:

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns">
<node id="node1">
<data key="label">node1</data>
<data key="degree">6</data>
</node>
<node id="node2">
<data key="label">node2</data>
<data key="degree">32</data>
</node>
<node id="node3">
<data key="label">node3</data>
<data key="degree">25</data>
</node>
</graphml>

和两个包含年份的列表:

lastActive["2013","2014","2015"]
lastRelated["2012","2014","2011"]

使用以下代码将列表作为元素附加到数据集中:

for node in root:

#checks if correct node
for index, i in enumerate(nameOfNode):
if i == node[0].text:

#create and add lastRelated element
lastRelated = Element('data')
lastRelated.set('key', 'lastRelated')
node.append(lastRelated)
lastRelated.text = lastRelated[index]

#create and add lastActive element
lastActive = Element('data')
lastActive.set('key', 'lastActive')
node.append(lastActive)
lastActive.text = lastActive[index]

updatedText = etree.tostring(node)

#write to file
file = open('dataset.graphml', 'wb')
file.write(updatedText)
file.close()

结果如下:

  <node id="node1">
<data key="label">node1</data>
<data key="degree">6</data>
<data key="lastActive">2015</data><data key="lastRelated">2011</data></node>

我希望它的结构如下:

  <node id="node1">
<data key="label">node1</data>
<data key="degree">6</data>
<data key="lastActive">2015</data>
<data key="lastRelated">2011</data>
</node>

有人能解决这个问题吗?

最佳答案

您应该能够通过为 tail 提供合适的值来获得所需的输出。新元素的属性。 tail 是位于元素的结束标记之后、下一个元素的开始标记之前的文本。

...

thetail = "\n "
lastRelated.tail = thetail
lastActive.tail = thetail

updatedText = etree.tostring(node)

...

关于python - 用etree追加多个元素,如何将每个元素写在新行上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40085606/

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