如果你需要解析一些有或没有某些条目的XML,你通常会得到这样的模式:
planet = system.findall('.//planet')
row['discoveryyear'] = int(planet.findtext("./discoveryyear")) if planet.findtext("./discoveryyear") else None
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?我想避免第二个planet.findtext调用,但也不想写另一行文本来存储变量
我提出了一个辅助函数,而不是try/except解决方案:
def find_int(xml, text):
found = xml.findtext(text)
return int(found) if found else None
row['discoveryyear'] = find_int(planet, "./discoveryyear")
Run Code Online (Sandbox Code Playgroud)
(注意,found如果是的话也是假的'',这也是返回None的好例子)
这样就可以了(除非它是在第 0 年发现的,哈哈):
row['discoveryyear'] = int(planet.findtext("./discoveryyear") or 0) or None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |