0

我正在使用 Python 生成一些由另一个设备使用的 XML 文件。我有一个可行的解决方案,但我正在努力改进它。XML 必须包含的内容之一是时间表。这是星期一的条目在 XML 中的样子。

<Monday open="08:00" close="17:00" />

我在 Python 中使用 ElementTree 生成它没有问题,但现在我每天都被困在一行代码中。所以我的 Python 代码片段如下所示:

SubElement(schedule, 'Monday', open='08:00', close='17:00')
SubElement(schedule, 'Tuesday', open='08:00', close='17:00')
.
.
.
SubElement(schedule, 'Sunday', open='08:00', close='17:00')

XML 文件最终会在其中包含多个计划,并且将所有这些都输入出来似乎是不必要的重复。而不是这个,我想创建一个函数,它遍历一个列表来构建传递给 SubElement 的参数。作为该函数的一部分,我创建了这个字符串来替换我的 SubElement 调用中的时间。

"open=" + "\'08:00\'" + ", " + "close=" + "\'17:00\'"

如果我将其打印出来,它看起来与我在长时间输入代码时传递给 SubElement 的内容相同。但是,它显然与我在尝试运行脚本时收到以下错误不同。

File "C:\Python27\lib\xml\etree\ElementTree.py", line 528, in SubElement
   attrib = attrib.copy()
AttributeError: 'str' object has no attribute 'copy'

我查看了 SubElement 代码,它似乎在期待一本字典。但是,当我长时间输入内容时,我似乎也没有提供字典作为输入,所以我不明白为什么该函数应该接受该输入,而不是在我看来是等效的字符串. 有什么办法可以做我想做的事情,还是我被很多重复的代码行困住了?

4

1 回答 1

1

您应该将属性字典而不是“属性字符串”传递给 SubElement,例如:

SubElement(schedule, 'Sunday', {'open': '08:00', 'close': '17:00'})

或者

times = {'open': '08:00', 'close': '17:00'}
SubElement(schedule, 'Sunday', times)
于 2012-12-28T15:07:13.407 回答