導航:首頁 > 編程語言 > 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相關的資料

熱點內容
php備案號 瀏覽:986
php視頻水印 瀏覽:163
怎麼追程序員的女生 瀏覽:485
空調外壓縮機電容 瀏覽:77
怎麼將安卓變成win 瀏覽:457
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:803
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328
程序員留學移民 瀏覽:52
梁中間部位箍筋加密區 瀏覽:119
頻譜分析pdf 瀏覽:752
樂2怎麼升級安卓70 瀏覽:174
java中獲取日期 瀏覽:508
單片機74hc245 瀏覽:274
美國歷史上的總統pdf 瀏覽:753
程序員脫單實驗室靠不靠譜 瀏覽:460