在元素树 Python 中使用的变量

Variable variables for use in Element Tree Python

提问人:Jacksgrin 提问时间:1/14/2015 更新时间:1/14/2015 访问量:490

问:

我正在使用 python 的 Elementtree 模块创建一个 XML DOM,它似乎使用变量作为节点。我的问题是,如果我在循环中向 DOM 添加记录,如何创建唯一的可变名称,以便节点对 DOM 是持久的。示例代码如下。

someList =[1,2,3,4,5]
root = Element('root')
records = SubElement(root, 'records')

for idx, num in enumerate(someList):
    record+idx = SubElement(records, 'record')

希望这是有道理的。任何帮助或建议将不胜感激

python elementtree 变量

评论


答:

1赞 dylrei 1/14/2015 #1

对此的正确答案是将这些对象存储在字典中,而不是动态命名它们,例如:

data = dict()
for idx, num in enumerate(someList):
    data['record{}'.format(idx)] = SubElement(records, 'record')

展望未来,这也将使以后引用这些相同的对象、迭代它们等变得更加容易。

评论

0赞 Jacksgrin 1/14/2015
您能详细说明一下在字典键内使用括号的语法吗?我不熟悉以这种方式使用它们。顺便说一句,谢谢你的回答。
1赞 dylrei 1/14/2015
@Jacksgrin 在字符串内部,大括号是传递给 .format() 的参数的插入点。因此,'hello, {}'.format('world') 将产生 'hello, world' 请参见: mkaz.com/2012/10/10/python-string-format
0赞 Jacksgrin 1/14/2015
我可以使用这些存储在字典中的变量来设置子子项或文本吗?例如,我现在可以做:“record{}format(idx).text = record1value”
0赞 dylrei 1/14/2015
@Jacksgrin 当然可以,但对语法进行了一些修复。字典中存储的内容是对对象的引用。因此,如果你能正确地引用它,就像你用名字引用它一样。如果字典称为“d”,并且存储记录时的索引为 5,则以后可以将其称为 d['record5']。您也可以通过索引获取它,例如:d['record{}'.format(idx)]