与几个人在这里#1的帮助下,我想出了下面的代码:在蟒蛇:使用XPath与元素从列表
import lxml.etree
f = open("PaVE.tre.xml", "r")
out = open("PaVE.2.xml", "a")
data = f.read()
line=["HPV16","Alpha"]
tree = lxml.etree.XML(data)
nsmap = {'phylo': 'http://www.phyloxml.org'}
matches = tree.xpath('//phylo:name[text()="HPV16"]', namespaces=nsmap)
for e in matches:
#do something fun
不过,我硬编码HPV16到的XPath表达。我想从[0]行取HPV16。我在想这样的事:
matches = tree.xpath('//phylo:name[text()='+line[0]+']', namespaces=nsmap)
但是,这似乎并没有工作! 一如往常,任何帮助,将不胜感激
编辑: 我加了一对夫妇从XML文件中的行为请求:
<phyloxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phyloxml.org" xsi:schemaLocation="http://www.phyloxml.org http://www.phyloxml.org/1.10/phyloxml.xsd">
<phylogeny rooted="true">
<clade>
<clade>
<branch_length>0.5</branch_length>
<clade>
<name>HPV16</name>
<branch_length>1.0</branch_length>
</clade>
<clade>
我们可以得到的一个例子XML? – Petriborg 2012-08-14 23:54:46
你错过了'line [0]'...'text()=“'+ line [0] +'”]' – mVChr 2012-08-14 23:55:49
“的双引号,这似乎不起作用” - 发生了什么?例外?错误的输出?等等,'line [0]'的内容是什么? (p.s.你没有忘记它周围的双引号?) – mgibsonbr 2012-08-14 23:56:07