簡體   English   中英

在Python中自動使用ElementTree的正確方法是什么?

[英]What is the proper way to automate use of ElementTree in Python?

我正在使用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代碼,似乎正在期待字典。 但是,當我長時間輸入內容時,似乎也沒有提供字典作為輸入,所以我也無法理解為什么函數應該接受該輸入,但我不能理解顯示為等效的字符串。 有什么方法可以做我想做的事情,還是我陷入了很多重復的代碼行中?

您應該將屬性字典而不是“屬性字符串”傳遞給SubElement,例如:

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

要么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM