python – lxml通过regex查找标签
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – lxml通过regex查找标签,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1870字,纯文字阅读大概需要3分钟。
内容图文
![python – lxml通过regex查找标签](/upload/InfoBanner/zyjiaocheng/753/260eb934fa0746d39d886dc9b0cee9b5.jpg)
我正在尝试使用lxml来获取格式为的标记数组
<TEXT1>TEXT</TEXT1>
<TEXT2>TEXT</TEXT2>
<TEXT3>TEXT</TEXT3>
我试过用
xml_file.findall("TEXT*")
但是这会搜索文字星号.
我也尝试使用ETXPath,但似乎无法正常工作.
是否有任何API函数可以使用它,因为假设
TEXT被整数追加并不是最漂亮的解决方案.
解决方法:
是的,你可以使用regular expressions in lxml xpath.
这是一个例子:
results = root.xpath(
"//*[re:test(local-name(), '^TEXT.*')]",
namespaces={'re': "http://exslt.org/regular-expressions"})
当然,在你提到的例子中,你并不需要正则表达式.你可以使用starts-with() xpath函数:
results = root.xpath("//*[starts-with(local-name(), 'TEXT')]")
完整计划:
from lxml import etree
root = etree.XML('''
<root>
<TEXT1>one</TEXT1>
<TEXT2>two</TEXT2>
<TEXT3>three</TEXT3>
<x-TEXT4>but never four</x-TEXT4>
</root>''')
result1 = root.xpath(
"//*[re:test(local-name(), '^TEXT.*')]",
namespaces={'re': "http://exslt.org/regular-expressions"})
result2 = root.xpath("//*[starts-with(local-name(), 'TEXT')]")
assert(result1 == result2)
for result in result1:
print result.text, result.tag
满足新要求,请考虑以下XML:
<root>
<tag>
<TEXT1>one</TEXT1>
<TEXT2>two</TEXT2>
<TEXT3>three</TEXT3>
</tag>
<other_tag>
<TEXT1>do not want to found one</TEXT1>
<TEXT2>do not want to found two</TEXT2>
<TEXT3>do not want to found three</TEXT3>
</other_tag>
</root>
如果想要找到所有TEXT元素,它们是< tag>的直接子元素.元件:
result = root.xpath("//tag/*[starts-with(local-name(), 'TEXT')]")
assert(' '.join(e.text for e in result) == 'one two three')
或者,如果想要所有TEXT元素只是第一个标记元素的直接子元素:
result = root.xpath("//tag[1]/*[starts-with(local-name(), 'TEXT')]")
assert(' '.join(e.text for e in result) == 'one two three')
或者,如果只想找到每个标记元素的第一个TEXT元素:
result = root.xpath("//tag/*[starts-with(local-name(), 'TEXT')][1]")
assert(' '.join(e.text for e in result) == 'one')
Resorources:
> http://www.w3schools.com/xpath/
> http://lxml.de/xpathxslt.html
内容总结
以上是互联网集市为您收集整理的python – lxml通过regex查找标签全部内容,希望文章能够帮你解决python – lxml通过regex查找标签所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。