快捷搜索:  汽车  科技

python sprt函数详细用法,教你如何使用lxml.etree

python sprt函数详细用法,教你如何使用lxml.etree>>> attributes = root 。ATTRIB >>> 打印(属性[ “有趣” ]) 完全 >>> 打印(属性,获得(“无此类属性” )) 无 >>> 属性[ “你好” ] = “Guten变量” >>> 打印(属性[ “你好” ]) Guten标签 >>> 打印(根。获得(“你好” )) Guten标签 请注意,attrib是一个由Element本身支持的类似dict的对象。这意味着元素的任何更改都会反映在属性中 ,反之亦然。这也意味着,XML树在内存中保持活着,只要ATTRIB其要素之一是在使用中。要获取不依赖于XML树的属性的独立快照,请将其复制到dict中:>>> 打印(根。获得(“有趣” )) 完全 >>> 打印(根。获得(

python sprt函数详细用法,教你如何使用lxml.etree(1)

这是一个关于使用lxml.etree进行XML处理的教程。它简要概述了ElementTree API的主要概念,以及一些简单的增强功能,使您作为程序员的生活更轻松。

有关API的完整参考,请参阅生成的API文档

内容

本文章主要介绍的是元素将属性作为dict和元素包含文本

元素将属性作为dict

XML元素支持属性。您可以直接在Element工厂中创建它们:

>>> root = etree 。元素(“root” , 有趣= “完全” ) >>> etree 。tostring (root ) b'<root interesting =“完全”/>'

属性只是无序的名称 - 值对,因此处理它们的一种非常方便的方法是通过Elements的类字典界面:

>>> 打印(根。获得(“有趣” )) 完全 >>> 打印(根。获得(“你好” )) 无 >>> 根。集(“你好” , “忽忽” ) >>> 打印(根。获得(“你好” )) 忽忽 >>> etree 。tostring (root ) b'<root interesting =“完全”hello =“Huhu”/>' >>> 排序(根。键()) [ '你好', '有趣'] >>> 为 名称, 值 中的 排序(根。项目()): ... 打印(' %S = %R ' % (名称, 值)) 你好= '忽忽' 有趣= '完全'

对于您想要进行项目查找或有其他理由获取“真正的”类字典对象的情况,例如传递它,您可以使用attrib属性:

>>> attributes = root 。ATTRIB >>> 打印(属性[ “有趣” ]) 完全 >>> 打印(属性,获得(“无此类属性” )) 无 >>> 属性[ “你好” ] = “Guten变量” >>> 打印(属性[ “你好” ]) Guten标签 >>> 打印(根。获得(“你好” )) Guten标签

请注意,attrib是一个由Element本身支持的类似dict的对象。这意味着元素的任何更改都会反映在属性中 ,反之亦然。这也意味着,XML树在内存中保持活着,只要ATTRIB其要素之一是在使用中。要获取不依赖于XML树的属性的独立快照,请将其复制到dict中:

>>> d = 字典(根。ATTRIB ) >>> 排序(d 。项目()) [( '你好', 'Guten标签'),( '有趣', '完全')] >>> root = etree 。元素(“root” ) >>> root 。text = “TEXT” >>> 打印(根。文本) TEXT >>> etree 。tostring (root ) b'<root> TEXT </ root>'

在许多XML文档(以数据为中心的文档)中,这是唯一可以找到文本的地方。它由树层次结构最底部的叶标记封装。

但是,如果XML用于标记文本文档(如(X)HTML),则文本也可以出现在树的中间的不同

python sprt函数详细用法,教你如何使用lxml.etree(2)

欢迎大家加入小编的技术交流全

元素之间:

< HTML > < 体>你好< BR />世界</ 身体> </ HTML >

这里,<br/>标签被文本包围。这通常被称为 文档样式混合内容 XML。Elements通过它们的tail属性来支持它 。它包含直接跟在元素后面的文本,直到XML树中的下一个元素:

>>> html = etree 。元素(“html” ) >>> body = etree 。SubElement (html , “body” ) >>> body 。text = “TEXT” >>> etree 。tostring (html ) b'<html> <body> TEXT </ body> </ html>' >>> br = etree 。子元素(正文, “br” ) >>> etree 。tostring (html ) b'<html> <body> TEXT <br/> </ body> </ html>' >>> br 。tail = “TAIL” >>> etree 。tostring (html ) b'<html> <body> TEXT <br/> TAIL </ body> </ html>'

两个属性.text和.tail足以表示XML文档中的任何文本内容。这样,除了Element类之外,ElementTree API不需要任何特殊的文本节点,这些节点往往会相当频繁(正如您可能从经典DOMAPI中获知)。

但是,有些情况下尾部文本也会妨碍。例如,当您从树中序列化元素时,您并不总是希望在结果中使用尾部文本(尽管您仍然需要其子项的尾部文本)。为此, tostring()函数接受关键字参数with_tail:

>>> etree 。tostring (br ) b'<br/> TAIL' >>> etree 。tostring (br , with_tail = False ) #lxml.etree only! B '<BR/>'

如果你想读的只有文字,即没有任何中间变量,你必须递归串联所有文字和尾部 以正确的顺序属性。同样,tostring()函数来拯救,这次使用method关键字:

>>> etree 。tostring (html , method = “text” ) b'TEXTTAIL'

如果大家没有找到一个好的技术交流群或者需要关于python的资料的如1.爬虫库--requests,bs4,lxml,scrapy,pyspider2.python开发---Django,Tornado,flask框架3.linux,shell脚本4.selenium自动化测试5.自动化运维Zabbix6.数据库 MySql,NoSql,redis正则表达式re,网络编程,面向对象,lambda,IO并发编程,GUI图形

可以加入小编的群418775537

猜您喜欢: