gpt4 book ai didi

使用循环创建 Python XML 文件并将值分配给子元素

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:11 25 4
gpt4 key购买 nike

我使用 xml.etree.ElementTree 模块和 Python 3.6 来创建一个包含数十个子元素的 XML 文件。我的目标应该是这样的:

<shots>
<shot id="0">
<Audio_Channels>2</Audio_Channels>
<Audio_File>testhq12.mov</Audio_File>
<Audio_Fps>Unspecified</Audio_Fps>
...
<Type>C</Type>
<Width>4096</Width>
<shot/>
<shot id="1">
....
</shots>

到目前为止,我一直在使用以下代码来创建此结构,但当需要添加大量“子字段”时,它会变得非常难看

_audio_channels = Element('Audio_Channels')
shot.append(_audio_channels)
_audio_channels.text = str(audio_channels_data)

_audio_file = Element('Audio_File')
shot.append(_audio_file)
_audio_file.text = str(audio_file_data)
.
.
.

所以我尝试用一​​个看起来有点像这样的循环来简化它:

fields = ['Audio_Channels', 'Audio_File', 'Audio_Fps', ...]
for k in fields:
prop = Element(k)
shot.append(prop)

但我不知道如何稍后仅使用字段列表中的元素作为键来向它们分配任何文本?试过了,但没用

shot.insert(str(audio_file_data), 'Audio_File')

最佳答案

如果我正确理解你的目的,请尝试这样的事情:

import xml.etree.ElementTree as ET
fields = ['Audio_Channels', 'Audio_File', 'Audio_Fps']
dats = [ 2,'testhq12.mov', 'Unspecified']

shots = ET.Element('shots')
shot = ET.SubElement(shots, 'shot')
for f, d in zip(fields,dats):
elem = ET.Element(f)
elem.text=str(d)
shot.append(elem)

输出应该类似于:

<shots>
<shot>
<Audio_Channels>2</Audio_Channels>
<Audio_File>testhq12.mov</Audio_File>
<Audio_Fps>Unspecified</Audio_Fps>
</shot>
</shots>

关于使用循环创建 Python XML 文件并将值分配给子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60055602/

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