python - 在 Python 中有没有更好的方法来分配 lxml xpath() 的第一个结果?
问题描述
我正在转换一些将 XML 文档从 Perl 转换为 Python 的脚本。
在 Perl 中使用 XML::LibXML 我可以做
my ($target) = $dom->findnodes('/root/child1');
从返回的节点列表中分配第一个节点。
到目前为止,在 Python 中我得到了这个工作:
target = (tree.xpath('/root/child1'))[0]
但我想知道是否有更好或更类似于 Python 的方法来做到这一点。
解决方案
如果您确定在 下始终只有一个child1
节点,则可以使用可迭代解包root
将方法中返回列表的第一项直接分配给变量:xpath
target, = tree.xpath('/root/child1')
或者,如果您的输入中可能有多个child1
节点root
,您可以使用星号表达式将其余匹配节点解压缩到未使用的变量中,通常_
按约定命名:
target, *_ = tree.xpath('/root/child1')
可迭代解包通常被认为比通过索引指定列表项更具 Pythonic,除非您需要直接在任意索引处指定项目。
推荐阅读
- r - 尝试使用 rvest 提取 r 包的链接
- php - 一键删除 14 行
- php - 从单独的表中创建列引用 2 列 laravel
- ats - 为什么这个模板在单个文件中工作而不是跨文件工作?
- excel - 在 vba 中,我得到一个未设置的对象变量(错误 91)
- sql - SQL:使用百分比对表进行每月细分
- javascript - HTML 脚本捕获文本并使用自己的值执行事件
- google-apps-script - Google 表格高级 Google 服务 URL 缩短器 403 错误:禁止
- javascript - 如果 polyfill 脚本下载失败会怎样?
- git - Git 卡在 git pull upstream master