python中treenode_python ElementTree 基本读操作示例

示例可以附件中下载

1.加载xml文件

加载XML文件共有2种方法,一是加载指定字符串,二是加载指定文件

2.获取element的方法

a) 通过getiterator

b) 过 getchildren

c) find方法

d) findall方法

示例如下:

#-*- coding:utf-8 -*-

from xml.etree import ElementTree

def print_node(node):

'''''打印结点基本信息'''

print "=============================================="

print "node.attrib:%s" % node.attrib

if node.attrib.has_key("age") > 0 :

print "node.attrib['age']:%s" % node.attrib['age']

print "node.tag:%s" % node.tag

print "node.text:%s" % node.text

def read_xml(text):

'''''读xml文件'''

# 加载XML文件(2种方法,一是加载指定字符串,二是加载指定文件)

# root = ElementTree.parse(r"D:\test.xml")

root = ElementTree.fromstring(text)

# 获取element的方法

# 1 通过getiterator

lst_node = root.getiterator("person")

for node in lst_node:

print_node(node)

# 2通过 getchildren

lst_node_child = lst_node[0].getchildren()[0]

print_node(lst_node_child)

# 3 .find方法

node_find = root.find('person')

print_node(node_find)

#4. findall方法

node_findall = root.findall("person/name")[1]

print_node(node_findall)

if __name__ == '__main__':

# read_xml(open("test.xml").read())

write_xml(open("test.xml").read())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用类的方法实现二叉树的基本操作示例代码: ```python class TreeNode: def __init__(self, val=None, left=None, right=None): self.val = val self.left = left self.right = right class BinaryTree: def __init__(self, root=None): self.root = root # 插入节点 def insert(self, val): node = TreeNode(val) if not self.root: self.root = node else: queue = [self.root] while queue: cur = queue.pop(0) if not cur.left: cur.left = node return elif not cur.right: cur.right = node return else: queue.append(cur.left) queue.append(cur.right) # 删除节点 def delete(self, val): if not self.root: return if self.root.val == val: self.root = None return queue = [self.root] while queue: cur = queue.pop(0) if cur.left: if cur.left.val == val: cur.left = None return else: queue.append(cur.left) if cur.right: if cur.right.val == val: cur.right = None return else: queue.append(cur.right) # 前序遍历 def preorder(self, node): if not node: return print(node.val, end=' ') self.preorder(node.left) self.preorder(node.right) # 序遍历 def inorder(self, node): if not node: return self.inorder(node.left) print(node.val, end=' ') self.inorder(node.right) # 后序遍历 def postorder(self, node): if not node: return self.postorder(node.left) self.postorder(node.right) print(node.val, end=' ') ``` 使用示例: ```python # 创建二叉树 tree = BinaryTree() tree.insert(5) tree.insert(3) tree.insert(7) tree.insert(2) tree.insert(4) tree.insert(6) tree.insert(8) # 前序遍历 print('前序遍历:', end=' ') tree.preorder(tree.root) print() # 序遍历 print('序遍历:', end=' ') tree.inorder(tree.root) print() # 后序遍历 print('后序遍历:', end=' ') tree.postorder(tree.root) print() # 删除节点 tree.delete(4) print('删除节点后的序遍历:', end=' ') tree.inorder(tree.root) print() ``` 输出结果: ``` 前序遍历: 5 3 2 4 7 6 8 序遍历: 2 3 4 5 6 7 8 后序遍历: 2 4 3 6 8 7 5 删除节点后的序遍历: 2 3 5 6 7 8 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值