導航:首頁 > 編程語言 > pythonxml庫

pythonxml庫

發布時間:2023-07-11 20:03:46

1. python-xml怎麼安裝啊

pip install lxml python2.7.9 自帶pip安裝工具。 看下面圖片,圖中顯示本人電腦已經安裝好了。
1.

直接

下載的模塊文件中已經有了模塊的文件,有些模塊只有一個文件,比如較早版本的BeautifulSoup,有些是一個文件夾,比如新版本BeautifulSoup就是一個叫做bs4的文件夾。

把這些文件直接到你的python路徑下的/Lib/site-packages文件夾中,比如C:/Python27/Lib/site-packages。之後就可以在程序里直接引用了:

import BeautifulSoup

或者

from bs4 import BeautifulSoup

這是根據你放置的文件位置不同而決定的。

網上有人說直接放在Lib文件夾中就可以了。的確這樣也行,但Lib文件夾中都是自帶的模塊,看一下就會發現我們用過的random、re等模塊的代碼文件。而外部模塊一般放在site-packages文件夾中。

2.

setup.py

很多模塊里都附帶了setup.py文件,有同學直接雙擊了,然後發現沒有用。

它的使用方法是從命令行去到setup.py所在的路徑下,運行

python setup.py install

仔細看一下安裝時輸出的信息可以發現,在線學習這個命令做的事情其實也就是幫你把模塊的代碼到site-packages文件夾。

3.

setuptools

使用setuptools可以直接根據模塊名稱來自動下載安裝,不需要自己再去尋找模塊的安裝文件。不過在使用之前,你得先安裝setuptools自身。

windows平台的32位python,可以直接下載setuptools的exe文件安裝。

2. 用python怎麼操作xml文件內容

一、什麼是xml?
xml即可擴展標記語言,它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
abc.xml

復制代碼代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item id="4">
<caption>測試</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>

Ok ,從結構上,它很像我們常見的HTML超文本標記語言。但他們被設計的目的是不同的,超文本標記語言被設計用來顯示數據,其焦點是數據的外觀。它被設計用來傳輸和存儲數據,其焦點是數據的內容。
那麼它有如下特徵:
首先,它是有標簽對組成,<aa></aa>
標簽可以有屬性:<aa id='123'></aa>
標簽對可以嵌入數據:<aa>abc</aa>
標簽可以嵌入子標簽(具有層級關系):
二、獲得標簽屬性
那麼,下面來介紹如何用python來讀取這種類型的文件。

復制代碼代碼如下:

#coding=utf-8
import xml.dom.minidom
#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')
#得到文檔元素對象
root = dom.documentElement
print root.nodeName
print root.nodeValue
print root.nodeType
print root.ELEMENT_NODE

mxl.dom.minidom 模塊被用來處理xml文件,所以要先引入。
xml.dom.minidom.parse() 用於打開一個xml文件,並將這個文件對象dom變數。
documentElement 用於得到dom對象的文檔元素,並把獲得的對象給root
每一個結點都有它的nodeName,nodeValue,nodeType屬性。
nodeName為結點名字。
nodeValue是結點的值,只對文本結點有效。
nodeType是結點的類型。catalog是ELEMENT_NODE類型
現在有以下幾種:
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'

三、獲得子標簽
現在要獲得catalog的子標簽以的標簽name

復制代碼代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item id="4">
<caption>測試</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>

對於知道元素名字的子元素,可以使用getElementsByTagName方法獲取:

復制代碼代碼如下:

#coding=utf-8
import xml.dom.minidom
#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')
#得到文檔元素對象
root = dom.documentElement
bb = root.getElementsByTagName('maxid')
b= bb[0]
print b.nodeName
bb = root.getElementsByTagName('login')
b= bb[0]
print b.nodeName

如何區分相同標簽名字的標簽:

復制代碼代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item id="4">
<caption>測試</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>

<caption>和<item>標簽不止一個如何區分?
復制代碼代碼如下:

#coding=utf-8
import xml.dom.minidom
#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')
#得到文檔元素對象
root = dom.documentElement
bb = root.getElementsByTagName('caption')
b= bb[2]
print b.nodeName
bb = root.getElementsByTagName('item')
b= bb[1]
print b.nodeName

root.getElementsByTagName('caption') 獲得的是標簽為caption 一組標簽,b[0]表示一組標簽中的第一個;b[2] ,表示這一組標簽中的第三個。
四、獲得標簽屬性值

復制代碼代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item id="4">
<caption>測試</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>

<login>和<item>標簽是有屬性的,如何獲得他們的屬性?
復制代碼代碼如下:

#coding=utf-8
import xml.dom.minidom
#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')
#得到文檔元素對象
root = dom.documentElement
itemlist = root.getElementsByTagName('login')
item = itemlist[0]
un=item.getAttribute("username")
print un
pd=item.getAttribute("passwd")
print pd
ii = root.getElementsByTagName('item')
i1 = ii[0]
i=i1.getAttribute("id")
print i
i2 = ii[1]
i=i2.getAttribute("id")
print i

getAttribute方法可以獲得元素的屬性所對應的值。
五、獲得標簽對之間的數據
復制代碼代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item id="4">
<caption>測試</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>

<caption>標簽對之間是有數據的,如何獲得這些數據?
獲得標簽對之間的數據有多種方法,
方法一:

復制代碼代碼如下:

#coding=utf-8
import xml.dom.minidom
#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')
#得到文檔元素對象
root = dom.documentElement
cc=dom.getElementsByTagName('caption')
c1=cc[0]
print c1.firstChild.data
c2=cc[1]
print c2.firstChild.data
c3=cc[2]
print c3.firstChild.data

firstChild 屬性返回被選節點的第一個子節點,.data表示獲取該節點人數據。
方法二:

復制代碼代碼如下:

#coding=utf-8
from xml.etree import ElementTree as ET
per=ET.parse('abc.xml')
p=per.findall('./login/item')
for oneper in p:
for child in oneper.getchildren():
print child.tag,':',child.text

p=per.findall('./item')
for oneper in p:
for child in oneper.getchildren():
print child.tag,':',child.text

方法二有點復雜,所引用模塊也與前面的不一樣,findall用於指定在哪一級標簽下開始遍歷。
getchildren方法按照文檔順序返回所有子標簽。並輸出標簽名(child.tag)和標簽的數據(child.text)
其實,方法二的作用不在於此,它核心功能是可以遍歷某一級標簽下的所有子標簽。

3. python參數如果是xml字元串,該怎麼寫

調用Python腳本時傳遞XML字元串作為參數可能會導致錯誤,因為某些特殊字元可能被操作系統或Python解釋器解釋為命令或代碼。為配備升了避免這個問題,可以將XML字元串作為滾枝一個文本文件傳遞,或者使用base64編碼將字元串編碼為非特殊字元。下面是兩種方法的示例。

方法一:將XML字元串保存到文件,並將文件名作為參數傳遞:

import sys

import xml.etree.ElementTree as ET

filename = sys.argv[1]

with open(filename, 'r') as file:

xml_string = file.read()

xml_root = ET.fromstring(xml_string)

import base64

xml_string = '<?xml version="1.0" encoding="UTF-8"?>...'

encoded_xml = base64.b64encode(xml_string.encode()).decode()

import sys

import base64

import xml.etree.ElementTree as ET

encoded_xml = sys.argv[1]

decoded_xml = base64.b64decode(encoded_xml.encode()).decode()

xml_root = ET.fromstring(decoded_xml)

4. python 解析xml需要什麼模塊

Python的標准庫中,提供了6種可以用於處理XML的包。

(1)xml.dom

xml.dom實現的是W3C制定的DOM API。如果你習慣於使用DOM API或者有人要求這這樣做,可以使用這個包。不過要注意,在這個包中,還提供了幾個不同的模塊,各自的性能有所區別。

DOM解析器在任何處理開始之前,必須把基於XML文件生成的樹狀數據放在內存,所以DOM解析器的內存使用量完全根據輸入資料的大小。

(2)xml.dom.minidom

xml.dom.minidom是DOM API的極簡化實現,比完整版的DOM要簡單的多,而且這個包也小的多。那些不熟悉DOM的朋友,應該考慮使用xml.etree.ElementTree模塊。據lxml的作者評價,這個模塊使用起來並不方便,效率也不高,而且還容易出現問題。

相關推薦:《Python教程》

(3)xml.dom.pulldom

與其他模塊不同,xml.dom.pulldom模塊提供的是一個「pull解析器」,其背後的基本概念指的是從XML流中pull事件,然後進行處理。雖然與SAX一樣採用事件驅動模型(event-driven processing model),但是不同的是,使用pull解析器時,使用者需要明確地從XML流中pull事件,並對這些事件遍歷處理,直到處理完成或者出現錯誤。

pull解析(pull parsing)是近來興起的一種XML處理趨勢。此前諸如SAX和DOM這些流行的XML解析框架,都是push-based,也就是說對解析工作的控制權,掌握在解析器的手中。

(4)xml.sax

xml.sax模塊實現的是SAX API,這個模塊犧牲了便捷性來換取速度和內存佔用。SAX是Simple API for XML的縮寫,它並不是由W3C官方所提出的標准。它是事件驅動的,並不需要一次性讀入整個文檔,而文檔的讀入過程也就是SAX的解析過程。所謂事件驅動,是指一種基於回調(callback)機制的程序運行方法。

(5)xml.parser.expat

xml.parser.expat提供了對C語言編寫的expat解析器的一個直接的、底層API介面。expat介面與SAX類似,也是基於事件回調機制,但是這個介面並不是標准化的,只適用於expat庫。

expat是一個面向流的解析器。您注冊的解析器回調(或handler)功能,然後開始搜索它的文檔。當解析器識別該文件的指定的位置,它會調用該部分相應的處理程序(如果您已經注冊的一個)。該文件被輸送到解析器,會被分割成多個片斷,並分段裝到內存中。因此expat可以解析那些巨大的文件。

(6)xml.etree.ElementTree(以下簡稱ET)

xml.etree.ElementTree模塊提供了一個輕量級、Pythonic的API,同時還有一個高效的C語言實現,即xml.etree.cElementTree。與DOM相比,ET的速度更快,API使用更直接、方便。與SAX相比,ET.iterparse函數同樣提供了按需解析的功能,不會一次性在內存中讀入整個文檔。ET的性能與SAX模塊大致相仿,但是它的API更加高層次,用戶使用起來更加便捷。

建議:在使用Python進行XML解析時,首選使用ET模塊,除非你有其他特別的需求,可能需要另外的模塊來滿足。

5. python讀取xml文件有哪些方法

1、以下幾種方法建議初學者使用:

下面的方法涉及知識比較多,熟練掌握上面方法後可以了解使用:

2、Dom讀取

3、Dom4j讀取
使用dom4j需要導入相關的jar包

import java.io.File;
import java.util.Iterator;
import java.util.List;


4、JDom讀取
使用jdom需要導入相關的jar包

import java.io.FileInputStream;

import java.io.InputStream;

5、Sax讀取

6、properties的讀取

6. 如何用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)若有不足,請留言,在此先感謝!

7. python lxml庫怎麼安裝

lxml是Python中與XML及HTML相關功能中最豐富和最容易使用的庫。lxml並不是Python自帶的包,而是為libxml2和libxslt庫的一個Python化的綁定。它與眾不同的地方是它兼顧了這些庫的速度和功能完整性,以及純Python API的簡潔性,與大家熟知的ElementTree API兼容但比之更優越!但安裝lxml卻又有點麻煩,因為存在依賴,直接安裝的話用easy_install, pip都不能成功,會報gcc錯誤。下面列出來Windows、Linux下面的安裝方法:
【Windows系統】
先確保Python已經安裝好,環境變數也配置好了,相應的的easy_install、pip也安裝好了.
1. 執行 pip install virtualenv
[python] view plain print?
C:\>pip install virtualenv
Requirement already satisfied (use --upgrade to upgrade): virtualenv in c:\python27\lib\site-package
s\virtualenv-12.0.4-py2.7.egg
2. 從官方網站下載與系統,Python版本匹配的lxml文件:
http //pypi.python.org/pypi/lxml/2.3/
NOTE:
比如說我的電腦是Python 2.7.4, 64位操作系統,那麼我就可以下載
[python] view plain print?
lxml-2.3-py2.7-win-amd64.egg (md5) # Python Egg

lxml-2.3.win-amd64-py2.7.exe (md5) # MS Windows installer
3. 執行 easy_install lxml-2.3-py2.7-win-amd64.egg
[python] view plain print?
D:\Downloads>easy_install lxml-2.3-py2.7-win-amd64.egg # 進入該文件所在目錄執行該命令
Processing lxml-2.3-py2.7-win-amd64.egg
creating c:\python27\lib\site-packages\lxml-2.3-py2.7-win-amd64.egg
Extracting lxml-2.3-py2.7-win-amd64.egg to c:\python27\lib\site-packages
Adding lxml 2.3 to easy-install.pth file
Installed c:\python27\lib\site-packages\lxml-2.3-py2.7-win-amd64.egg
Processing dependencies for lxml==2.3
Finished processing dependencies for lxml==2.3
NOTE:
1. 可用exe可執行文件,方法更簡單直接安裝就可以
2. 可用easy_install安裝方式,也可以用pip的方式
[python] view plain print?
#再執行下,就安裝成功了!
>>> import lxml
>>>
3. 如用pip安裝,常用命令就是:
pip install simplejson # 安裝Python包
pip install --upgrade simplejson # 升級Python包
pip uninstall simplejson # 卸載Python包
4. 如用Eclipse+Pydev的開發方式,需要移除舊包,重新載入一次
Window --> Preferences --> PyDev --> Interperter-python # 否則導包的時候會報錯
【Linux系統】
因為lxml依賴的包如下:
libxml2, libxml2-devel, libxlst, libxlst-devel, python-libxml2, python-libxslt
所以安裝步驟如下:
第一步: 安裝 libxml2
$ sudo apt-get install libxml2 libxml2-dev
第二步: 安裝 libxslt
$ sudo apt-get install libxlst libxslt-dev
第三步: 安裝 python-libxml2 和 python-libxslt
$ sudo apt-get install python-libxml2 python-libxslt
第四步: 安裝 lxml
$ sudo easy_install lxml

閱讀全文

與pythonxml庫相關的資料

熱點內容
庫房管理系統源碼 瀏覽:59
安卓應用多為什麼會卡 瀏覽:10
php程序員工作職責 瀏覽:306
程序員可以轉行做運維嗎 瀏覽:323
如何檢測到伺服器埠是否通 瀏覽:851
linuxsed正則 瀏覽:109
linux安裝gz文件 瀏覽:357
linux如何卸載編譯的軟體 瀏覽:929
高三解壓活動視頻 瀏覽:780
如何把伺服器卡爆 瀏覽:949
餓了么java程序員 瀏覽:960
python編譯時找不到路徑 瀏覽:910
jpg轉換pdf軟體 瀏覽:103
php讀取json文件 瀏覽:866
螺桿壓縮機的功率計算 瀏覽:74
谷輪壓縮機c 瀏覽:338
蘋果app如何復制到另一個手機 瀏覽:834
javasession超時 瀏覽:831
易金通app怎麼更改手機號 瀏覽:493
plc數控編程的方法 瀏覽:989