导航:首页 > 编程语言 > pythonelementtree

pythonelementtree

发布时间:2022-09-21 22:51:32

‘壹’ python 怎么预处理xml

ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。它在Python2.5以后成为Python标准库的一部分,但是Python2.4之前需要单独安装。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。

ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。

构建XML文件
ElementTree(tag),其中tag表示根节点,初始化一个ElementTree对象。

Element(tag, attrib={}, **extra)函数用来构造XML的一个根节点,其中tag表示根节点的名称,attrib是一个可选项,表示节点的属性。

SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点

Element.text和SubElement.text表示element对象的额外的内容属性,Element.tag和Element.attrib分别表示element对象的标签和属性。

ElementTree.write(file, encoding='us-ascii', xml_declaration=None, default_namespace=None, method='xml'),函数新建一个XML文件,并且将节点数数据写入XML文件中。

‘贰’ 怎样优雅解决 python 解析 xml gb2312 编码的问题

你以二进制形式读入XML文件,读入到bytes类型对象中,然后bytes.decode传编码参数就能指定二进制数据的编码、转换为python内部使用的utf-8。
bytes.decode(encoding="gb2312")

‘叁’ python elementtree 生成包含<![CDATA[ ]]>的xml文件

http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree

‘肆’ 你好,我要是想通过python的ElementTree的XML接口实现xml的删除,修改,创建的功能该怎么编写。麻烦了。

from xml.etree.ElementTree import ElementTree
from lxml import etree ##的下载安装lxml的包
Class XMLData:
def readXML(self,xml_file):##xml_file为xml文件名
doc = etree.ElementTree(file=xml_file)
root = doc.getroot();
items = root.getchildren();
listctrldata = {};
index = 1;
for item in items:
itemchild = item.getchildren();
arr_name = [];
fot ic in intemchild:
if ic.text = None:
ic.text=''
arr_name.append(ic.text)
listctrldata[index] = arr_name
index+=1
return listctrldata
##修改xml
def write(self,xml_file,listctrldata):
doc = etree.ElementTree(file=xml_file)
root = doc.getroot()
listlen = len(listctrldata)
itemlen = len(root.getchilddren())
if itemlen > listlen:
for more in range(itemlen-listlen):
root.remove(root.getchildren()[0])
elif itemlen < listlen:
for less in range(listlen-itemlen):
item = root.getchildren()[0]
itemadd = etree.Element(item.tag)
for it in item.getchildren():
itadd = stree.Element(it.tag)
itemadd.append(itadd)
root.append(itemadd)
else:pass
j=1
for item in root.getchildren():
itemchild = item.getchildren()
k = 0
for ic in itemchild:
ic.text = listctrldata[j][k]
k+=1
j+=1
f = open(xml_file,"w")
f.write(etree.tostring(root,pretty-print = true))
f.close()

‘伍’ Python中的ElementTree入如何生成XML文档

方法:
minidom.parse(filename):加载读取XML文件
doc.documentElement:获取XML文档对象
node.getAttribute(AttributeName):获取XML节点属性值
node.getElementsByTagName(TagName):获取XML节点对象集合
node.childNodes :返回子节点列表。
node.childNodes[index].nodeValue:获取XML节点值
node.firstChild:访问第一个节点,等价于pagexml.childNodes[0]
返回Node节点的xml表示的文本:
doc = minidom.parse(filename)
doc.toxml('UTF-8')
访问元素属性:
Node.attributes["id"]
a.name #就是上面的 "id"
a.value #属性的值

‘陆’ 在python中用ElementTree提取XML中的内容

fromxml.etreeimportElementTree
str_=''#文件中的xml字符串
xml_obj=ElementTree.fromstring(str_)

然后通过对xml_obj进行操作,xml_obj本身也是一个xml节点。

xml_obj.getchildren() 获取根节点的子节点列表

xml_obj.findall(node_name) 搜索xml_obj节点下名为node_name的所有节点

xml_obj.tag 节点的标签

xml_obj.text 节点的文本信息 ,本例中可以获得K这个文本。

xml_obj.tail 节点尾部的文本信息,本例中获取Channel Regulator KCR1 Suppresses Heart Rhythm by Molating the Pacemaker Current I
就需要搜索到标签为sup的节点,然后取节点的tail文本获得。

‘柒’ Python问题

1,可以根据特殊符号分割字符串,复杂点的可以用正则表达式
>>>a='0916.exe'
>>>b=a.split('.') #按点好分割字符串
>>>b[0]
0916
>>>b[1]
exe

2,基本原理同第一题
>>>a='i love you'
>>>b=a.split(' ') #按空格分割字符串
>>>for x in b:
print(x)
i
love
you

3
a=10
for b in range(a):
....l=[]
........for c in range(a):
........l.append(str(a))
....print(' '.join(l))

4
这个问题我不是很明白,什么是特定范围,是指的WINDOWS中的CMD窗口中打印出的一行居中或者LINUX中终端居中,如果是我所说的意思的话,比较复杂,要调用特殊的函数获得终端行的大小,然后计算后输出

5
command是你要分析的字符串,len是大写字母的数量

len=0
for s in command:
....if 65<=ord(s)<=90:
........len+=1

注:我不知道怎么在网络知道里打出空格,....就代表空格

‘捌’ python elementtree 判断节点是否有子节点

lxml takes all the pain out of XML.
Stephan Richter

lxml是Python语言里和XML以及HTML工作的功能最丰富和最容易使用的库。lxml是为libxml2和libxslt库的一个Python化的绑定。它与众不同的地方是它兼顾了这些库的速度和功能完整性,以及纯Python API的简洁性,大部分与熟知的ElementTree API兼容但比之更优越。

安装lxml:

要求:需要Python2.3或更后的版本

使用easy_install工具,以超级用户或管理员的角色run下面的命令

easy_install lxml

在windows下,最好指定版本号:easy_install lxml==2.2.6

使用lxml进行开发

lxml.etree指南

通常使用lxml.etree的方式

>>> from lxml import etree

Element类,一个Element是ElementTree API的主要容器类,大部分的XML tree功能都是通过这个类来访问的。Elements可以非常容易地通过Element工厂方法来创建。

>>> root = etree.Element("root")

元素的XML tag名字是通过tag属性来访问的

>>> print root.tag # root

Elements是在XML树状结构中组织的,为创建子元素并将它们加到父元素上,可以使用append()方法。

>>> root.append( etree.Element("child1") )

我们还有更高效的方法:SubElement工厂方法,它使用和Element工厂方法相同的参数,不过额外需要父节点作第一个参数:

>>> child2 = etree.SubElement(root, "child2")
>>> child3 = etree.SubElement(root, "child3")

可以使用tostring()方法来看得到的XML

>>> print etree.tostring(root, pretty_print=True)
<root>
<child1/>
<child2/>
<child3/>
</root>

元素是列表

>>> 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

可以使用insert()方法插入新的子节点:

>>> root.insert(0, etree.Element("child0"))
删除子节点:

>>> root[0] = root[-1] # this moves the element!
>>> for child in root:
... print(child.tag)
child3
child1
child2

如果想把一个元素拷贝到不同的地方,需要创建一个独立的deep 。

>>> from import deep
>>> element = etree.Element("neu")
>>> element.append( deep(root[1]) )
>>> print(element[0].tag)
child1
>>> print([ c.tag for c in root ])
[’child3’, ’child1’, ’child2’]

getparent()返回父节点:
>>> root is root[0].getparent() # lxml.etree only!
True

元素的兄弟或邻居节点是通过next和previous属性来访问的
The siblings (or neighbours) of an element are accessed as next and previous elements:
>>> root[0] is root[1].getprevious() # lxml.etree only!
True
>>> root[1] is root[0].getnext() # lxml.etree only!
True

带属性的元素

XML元素支持属性,可以用Element工厂方法直接创建。

>>> root = etree.Element("root", interesting="totally")
>>> etree.tostring(root)
b’<root interesting="totally"/>’

可以使用set和get方法访问这些属性:

>>> print root.get("interesting")
totally
>>> root.set("interesting", "somewhat")
>>> print root.get("interesting")
somewhat

也可以使用attrib性质的字典接口

>>> attributes = root.attrib
>>> print(attributes["interesting"])
somewhat
>>> print(attributes.get("hello"))
None
>>> attributes["hello"] = "Guten Tag"
>>> print(attributes.get("hello"))
Guten Tag
>>> print(root.get("hello"))
Guten Tag

元素可以包含文字:

>>> root = etree.Element("root")
>>> root.text = "TEXT"
>>> print(root.text)
TEXT
>>> etree.tostring(root)
’<root>TEXT</root>’

如果XML用在(X)HTML中,文本也可以在不同的元素中显示:
<html><body>Hello<br/>World</body></html>
元素有tail属性,它包含XML 树中元素直接跟的,直到下个元素的文本。

>>> html = etree.Element("html")
>>> body = etree.SubElement(html, "body")
>>> body.text = "TEXT"
>>> etree.tostring(html)
b’<html><body>TEXT</body></html>’
>>> br = etree.SubElement(body, "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>’

‘玖’ python解释xml文件遇到不合法字符,如何解决

python ElementTree处理gbk(或者gb2312)编码的XML文件的方法:
1,py文件的编码是utf-8,即在文件最开始有如下语句声明编码方式:
#-*-coding: utf-8-*-

2,读取文件内容时转码为utf-8的:
xml_file_text = open(xml_file_name).read().decode('gbk').encode('utf-8')
这样在处理过程中均是utf-8编码的字符串

阅读全文

与pythonelementtree相关的资料

热点内容
手机文件管理在哪儿新建文件夹 浏览:719
加密ts视频怎么合并 浏览:773
php如何写app接口 浏览:800
宇宙的琴弦pdf 浏览:395
js项目提成计算器程序员 浏览:942
pdf光子 浏览:832
自拍软件文件夹名称大全 浏览:326
程序员留学移民 浏览:51
梁中间部位箍筋加密区 浏览:119
频谱分析pdf 浏览:752
乐2怎么升级安卓70 浏览:173
java中获取日期 浏览:507
单片机74hc245 浏览:272
美国历史上的总统pdf 浏览:753
程序员脱单实验室靠不靠谱 浏览:460
php中间四位手机号 浏览:871
永旺app怎么样了 浏览:518
压缩空气流量计算软件 浏览:651
智慧聊天app怎么激活 浏览:926
一加换机备份到哪个文件夹 浏览:737