use*_*880 8 python list xmltodict
如果"车库"中只有一个"汽车",则以下代码会产生错误:
import xmltodict
mydict = xmltodict.parse(xmlstringResults)
for carsInGarage in mydict['garage']['car']:
# do something...
Run Code Online (Sandbox Code Playgroud)
原因是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
Run Code Online (Sandbox Code Playgroud)
让代码运行.但对于更高级的操作,这不是解决方案.
有人知道某种功能,即使只有一个元素吗?
Jac*_*dre 14
在Github上的这个问题中讨论了这个问题.xmltodict包现在支持
d = xmltodict.parse(s, force_list={'car'})
Run Code Online (Sandbox Code Playgroud)
虽然如果该字段不存在,这仍然不会创建一个空列表.
这当然不是一种优雅的方式,但这就是我为让代码运行所做的事情(如果有人遇到同样的问题并通过谷歌发现这一点):
import xmltodict
def guaranteed_list(x):
if not x:
return []
elif isinstance(x, list):
return x
else:
return [x]
mydict = xmltodict.parse(xmlstringResults)
for carsInGarage in guaranteed_list(mydict['garage']['car']):
# do something...
Run Code Online (Sandbox Code Playgroud)
但我想我会再次编写我的代码并“直接使用 XML”,正如评论之一所说。
| 归档时间: |
|
| 查看次数: |
3314 次 |
| 最近记录: |