如何从以下内容中提取 name4 的值?提供的示例是示例?我怎么能对 xml.parsers.expat 做同样的事情,我正在使用没有 xml.etree 的 python 2.4
<test name1="" name2="" name3="0.0.0.0" name4="Linux">
</test>
如何从以下内容中提取 name4 的值?提供的示例是示例?我怎么能对 xml.parsers.expat 做同样的事情,我正在使用没有 xml.etree 的 python 2.4
<test name1="" name2="" name3="0.0.0.0" name4="Linux">
</test>
import lxml.html as lh
doc=lh.fromstring('<test name1="" name2="" name3="0.0.0.0" name4="Linux"></test>')
doc.xpath('.//@name4')
Out[298]: ['Linux']
注意1:这个简单的例子可以使用正则表达式,但是使用正则表达式来解析 xml/html 是一种不好的做法,你不应该养成这样做的习惯。
注意 2:如果您要安装lxml
,xml.etree.ElementTree
与 python 附带的一样好(轻量级?)替代品,尤其是对于更简单的任务。
有时使用BeautifulSoup真的很容易
from BeautifulSoup import BeautifulSoup as bs
your_string = """<test name1="" name2="" name3="0.0.0.0" name4="Linux"></test>"""
soup = bs(your_string)
res = soup.findAll('test')
for i in res:
print i.get('name4')
您还可以在文档页面上找到更多示例
更新如何更改属性名称并打印整个 xml:
from BeautifulSoup import BeautifulSoup as bs
your_string = """<test name1="" name2="" name3="0.0.0.0" name4="Linux"></test>"""
soup = bs(your_string)
s = soup.test
s['name4'] = 'Ubuntu'
print soup
from xml.dom.minidom import parseString
dom = parseString('<test name1="" name2="" name3="0.0.0.0" name4="Linux"></test>')
xmlTag = dom.getElementsByTagName('test')[0]
print xmlTag.getAttribute("name4")
我更喜欢 ElementTree,因为它默认安装在许多发行版上,包括 RedHat/CentOS >= 5,并且易于使用。(但是,lxml 在功能上要优越得多)要使用:
import xml.etree.ElementTree as ET
elem = ET.fromstring('<test name1="" name2="" name3="0.0.0.0" name4="Linux"></test>')
name4 = elem.get("name4")
您还使用模块 re:
import re
pat = re.compile('name4="(.*?)"')
text = '<test name1="" name2="" name3="0.0.0.0" name4="Linux"></test>'
pat.findall(text)