python - 使用 Xpath 获取在属性之一中包含特定单词的 XML 节点
问题描述
以下示例来自对现有问题的一个非常好的答案。我想进一步细化这个问题: 从 lxml 中选择属性值
有了这个 XML,我想要一个特定节点属性包含字符串的节点
<?xml version ="1.0" encoding="UTF-8"?>
<level1>
<level2 first_att='att1.fff.tre' second_att='foo'><name>A</name><age>8</age></level2>
<level2 first_att='att2.ert.wer' second_att='bar'><name>B</name><age>9</age></level2>
<level2 first_att='att2.fff.wer' second_att='bar'><name>C</name><age>10</age></level2>
<level2 first_att='att2.ert.wer' second_att='bar'><name>D</name><age>11</age></level2>
</level1>
可以通过以下方式访问属性“bar”:
import lxml.etree as etree
tree = etree.parse("test_file.xml")
print tree.xpath("//level1/level2[@first_att='att1.fff.tre']/@second_att")[0]
如果我想在任何地方获取 first_att CONTAINS 'fff' 的节点怎么办?(示例中的第一个和第三个节点。
最终目的是获取一个字典来填充熊猫数据框。
[{'name':'A','age':8},{'name':'B','age':10}]
谢谢
解决方案
如果您想检查的不是整个属性值,而只是一部分,请尝试替换谓词
[@first_att='att1.fff.tre']
和
[contains(@first_att, 'fff')]
推荐阅读
- gradle - 有没有办法从 build.gradle 中获取依赖项的版本?
- swift - NSViewController.init(nibName:bundle:)
- c++ - 如何在 c++ qt 中将 xlsx 文件转换为 CSV?
- javascript - 菜单汉堡按钮未按预期打开,需要两次单击才能打开而不是一次(在移动视图中)
- php - 仅在两个小时 PHP 之间计算小时数
- php - 显示来自网站内 ftp 服务器的图片
- machine-learning - 如何分解大型网格搜索?
- r - R中的三个变量热图
- postgresql - 事务控制的奇怪行为
- react-native - 尝试从 react-native 中的 wav 文件创建 base64 字符串以存储在服务器上