pythonxml字典
⑴ python 讀取xml 怎麼只讀取特定位置標簽比如只讀取sale節點下的nameid,不要inst里的部分
#!/usr/bin/evnpython
#coding:utf-8
try:
importxml.etree.cElementTreeasET
exceptImportError:
importxml.etree.ElementTreeasET
importsys
try:
tree=ET.parse("test.xml")#打開xml文檔
root=tree.getroot()#獲得root節點
exceptException,e:
print"Error:cannotparsefile:country.xml."
sys.exit(1)
forcountryinroot.findall('sale'):#找到root節點下的所有sale節點
sale_nameid=country.find('nameid').text#子節專點下節屬點nameid的值
printsale_nameid
⑵ 用python解析XML格式的字元串
你這樣的數據還沒有用正則來的簡單
r'(?<=\<Result\>)(.+?)(?=\</Result\>)'
用XML會比較麻煩:
dom1 = minidom.parseString(xml)
result = dom1.getElementsByTagName("Result")
result = result[0].childNodes[0].nodeValue
⑶ 如何用python讀取xml文件
一、簡介
XML(eXtensible Markup Language)指可擴展標記語言,被設計用來傳輸和存儲數據,已經日趨成為當前許多新生技術的核心,在不同的領域都有著不同的應用。它是web發展到一定階段的必然產物,既具有SGML的核心特徵,又有著html的簡單特性,還具有明確和結構良好等許多新的特性。
python解析XML常見的有三種方法:一是xml.dom.*模塊,它是W3C DOM API的實現,若需要處理DOM API則該模塊很適合,注意xml.dom包裡面有許多模塊,須區分它們間的不同;二是xml.sax.*模塊,它是SAX API的實現,這個模塊犧牲了便捷性來換取速度和內存佔用,SAX是一個基於事件的API,這就意味著它可以「在空中」處理龐大數量的的文檔,不用完全載入進內存;三是xml.etree.ElementTree模塊(簡稱 ET),它提供了輕量級的Python式的API,相對於DOM來說ET 快了很多,而且有很多令人愉悅的API可以使用,相對於SAX來說ET的ET.iterparse也提供了 「在空中」 的處理方式,沒有必要載入整個文檔到內存,ET的性能的平均值和SAX差不多,但是API的效率更高一點而且使用起來很方便。
二、詳解
解析的xml文件(country.xml):
在CODE上查看代碼片派生到我的代碼片
<?xml version="1.0"?>
<data>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
1、xml.etree.ElementTree
ElementTree生來就是為了處理XML,它在Python標准庫中有兩種實現:一種是純Python實現的,如xml.etree.ElementTree,另一種是速度快一點的xml.etree.cElementTree。注意:盡量使用C語言實現的那種,因為它速度更快,而且消耗的內存更少。
在CODE上查看代碼片派生到我的代碼片
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
這是一個讓Python不同的庫使用相同API的一個比較常用的辦法,而從Python 3.3開始ElementTree模塊會自動尋找可用的C庫來加快速度,所以只需要import xml.etree.ElementTree就可以了。
在CODE上查看代碼片派生到我的代碼片
#!/usr/bin/evn python
#coding:utf-8
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import sys
try:
tree = ET.parse("country.xml") #打開xml文檔
#root = ET.fromstring(country_string) #從字元串傳遞xml
root = tree.getroot() #獲得root節點
except Exception, e:
print "Error:cannot parse file:country.xml."
sys.exit(1)
print root.tag, "---", root.attrib
for child in root:
print child.tag, "---", child.attrib
print "*"*10
print root[0][1].text #通過下標訪問
print root[0].tag, root[0].text
print "*"*10
for country in root.findall('country'): #找到root節點下的所有country節點
rank = country.find('rank').text #子節點下節點rank的值
name = country.get('name') #子節點下屬性name的值
print name, rank
#修改xml文件
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank > 50:
root.remove(country)
tree.write('output.xml')
運行結果:
三、總結
(1)Python中XML解析可用的類庫或模塊有xml、libxml2 、lxml 、xpath等,需要深入了解的還需參考相應的文檔。
(2)每一種解析方式都有自己的優點和缺點,選擇前可以綜合各個方面的性能考慮。
(3)若有不足,請留言,在此先感謝!
⑷ 用python讀取xml<></>之間的內容並修改
python是有相關的解析html格式的模塊的
可以識別出標簽,簡單的處理文件你可以用Beautiful Soup模塊,想做大一些的爬蟲可以使用scrapy框架的xpath語法來鎖定標簽。
這里引用下官方說明:
Beautiful Soup提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序。
Beautiful Soup自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為utf-8編碼。你不需要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時,Beautiful Soup就不能自動識別編碼方式了。然後,你僅僅需要說明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python解釋器,為用戶靈活地提供不同的解析策略或強勁的速度。
因此可以很方便地提取出HTML或XML標簽中的內容
給你個樣例:
frombs4importBeautifulSoup
importurllib2
html=urllib2.urlopen(url).read()#這里是直接爬取一個網址了,html變數也可以是一個本地的文件
content=BeautifulSoup(html).findAll('a')#使用這句就可以提取出文件中所有的<a></a>中的內容
"""模塊還支持很多路徑索引修改相關的功能,總之功能是比較強大的"""
希望我的回答可以幫到你:-)
⑸ 如何用python提取XML中的注釋
from xml.etree import ElementTreestr_ = '' #文件中的來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將普通詞典文件轉化為XML
Word
文檔本質上是壓縮後的
資源文件
與
xml
文件,可以根據
Open
XML
標准去解析
xml
文件。
要是嫌麻煩,用
python-docx
庫似乎也可以完成這個。
⑺ python中xml文件夾刪除怎麼恢復
你這貼的代碼格式都不調一下,看的好痛苦。。。。。另:貼一份我早期寫的一個解析xml轉換為字典的代碼,支持中文細微部分,你自己調import xml.etree.ElementTree as ETimport os'''將指定目錄下的xml文件轉換為字典 dictstrXmlFileName : xml 文件namestrElementPath : xml 節點dictSubElement : dict 用於返回eg. my_dict = xml2dict('xxx.xml', 'node', my_dict)'''def xml2dict(strXmlFileName, strElementPath, dictSubElement): elementList = [] dictSubElement.clear() try: eTree=ET.parse(os.getcwd() + strXmlFileName) except Exception,errorinfo: print "xml2dict: ET.parse(%s) generate exception, errorinfo:%s" % ((os.getcwd() + strXmlFileName), errorinfo) raise errorinfo try: elementList=eTree.findall(strElementPath) except Exception,errorinfo: print "xml2dict: eTree.findall(%s) generate exception, errorinfo:%s" % (strElementPath, errorinfo) raise errorinfo pathList = [] for element in elementList: for subelement in element.getchildren():# print "tag:%s, text:%s" % (subelement.tag, subelement.text.encode("utf-8")) if subelement.text is not None: if subelement.tag in pathList: dictSubElement[subelement.tag] = (os.getcwd() + subelement.text).encode('utf-8') else : dictSubElement[subelement.tag] = subelement.text.encode('utf-8') else: dictSubElement[subelement.tag] = "" #將None賦值一串空字元串
⑻ python如何解析xml格式的字元串,最好解析成鍵值對的那種,
有現成的庫可以用,xml.etree.ElementTree,或者xml.dom.minidom,ET相對來說簡單一些,而minidom配上node緩存也是一種不錯的實現,原理都一樣,就是把xml先轉化為dom樹。這兩個庫可以參考官方文檔,xml以及dom樹可以參考w3school
⑼ python xml文件,截取每行想要的字元
#coding=utf-8
importxml.dom.minidom
dom=xml.dom.minidom.parse(r'C:UsersaaaDesktop1111.xml')
root=dom.documentElement
itemlist=root.getElementsByTagName('video')
a=[]
foriteminitemlist:
pd=item.getAttribute("src")
a.append(pd)
b=tuple(set(a))
foriinb:
printi
⑽ python xml 查找關鍵字
可以這么寫:
def find(html):
soup = BeautifulSoup(html.getResponse().content,from_encoding='gb18030')
for index in soup.find_all('ROWDATA'):
print index
html是你的網頁回域名答