lxml.etree 教程2: Elements are lists
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | >>> child = root[ 0 ] >>> print (child.tag) child1 >>> print ( len (root)) 3 >>> root.index(root[ 1 ]) # lxml.etree only! 1 >>> children = list (root) >>> for child in root: ... print (child.tag) child1 child2 child3 >>> root.insert( 0 , etree.Element( "child0" )) >>> start = root[: 1 ] >>> end = root[ - 1 :] >>> print (start[ 0 ].tag) child0 >>> print (end[ 0 ].tag) child3 |
在ElementTree 1.3 和lxml 2.0之前,你可以通过检查一个元素的真值来判断它是否有子节点。例如,是否子节点的链表为空
1 2 | if root: # this no longer works! print ( "The root element has children" ) |
但是这种方式现在不被支持了,因为人们更倾向于某些东西评估为True,期待元素是某些东西。它们有没有子节点等。因此,很多用户会发现这让人惊奇如果任意元素在一个if语句里面被评估为False。取而代之,使用len(element),这更清楚,也不容易犯错。
>>> print (etree.iselement(root)) # test if it's some kind of Element True >>> if len (root): # test if it has children ... print ( "The root element has children" ) The root element has children |
1 2 3 4 5 6 7 8 9 10 11 12 | >>> for child in root: ... print (child.tag) child0 child1 child2 child3 >>> root[ 0 ] = root[ - 1 ] # this moves the element in lxml.etree! >>> for child in root: ... print (child.tag) child3 child1 child2 |
在这个例子里面,最后一个元素被移到了其他位置,而不是被复制了。
一个在lxml.etree中的元素只有唯一的父节点,可以使用getparent()方法来获取。
>>> root is root[ 0 ].getparent() # lxml.etree only! True |
如果你想把一个元素拷贝到到lxml.etree中的其他位置,考虑建立一个独立的深拷贝
>>> from copy import deepcopy >>> element = etree.Element( "neu" ) >>> element.append( deepcopy(root[ 1 ]) ) >>> print (element[ 0 ].tag) child1 >>> print ([ c.tag for c in root ]) [ 'child3' , 'child1' , 'child2' ] |
一个元素的siblings(或邻居)是通过next或previoise方法获取的
>>> root[ 0 ] is root[ 1 ].getprevious() # lxml.etree only! True >>> root[ 1 ] is root[ 0 ].getnext() # lxml.etree only! True |
作者:Shane
出处:http://bluescorpio.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://bluescorpio.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
标签:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律