【发布时间】:2016-05-13 10:15:42
【问题描述】:
如果“车库”中只有一辆“汽车”,则以下代码会产生错误:
import xmltodict
mydict = xmltodict.parse(xmlstringResults)
for carsInGarage in mydict['garage']['car']:
# do something...
原因是mydict['garage']['car'] 只是一个列表,如果有多个“汽车”元素。所以我做了这样的事情:
import xmltodict
mydict = xmltodict.parse(xmlstringResults)
if isinstance(mydict['garage']['car'], list):
for carsInGarage in mydict['garage']['car']:
# do something for each car...
else:
# do something for the car
让代码运行。但对于更高级的操作,这不是解决方案。
是否有人知道使用某种功能,即使只有一个元素?
【问题讨论】:
-
不要使用保留关键字如
dict作为变量名! -
如果
xmltodict返回一辆汽车或一辆list的汽车,则您的解决方案是合适的(请参阅Python 中的duck typing)。但是,请记住 XML 是有序的,生成的 JSON 使用无序的dict!有什么理由不直接使用 XML,例如lxml? -
在我的真实代码中它有一个不同的名称,但我也修复了代码上面的代码,谢谢。 - 我的第一次尝试是使用 ElementTree,但我遇到了一些编码问题......我认为这种方式可能更好......也许我错了