首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中:对列表中的元素使用xpath

在python中:对列表中的元素使用xpath
EN

Stack Overflow用户
提问于 2012-08-15 07:51:11
回答 1查看 97关注 0票数 1

在Stackoverflow的几个人的帮助下,我想出了以下代码:

代码语言:javascript
复制
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表达式中。我想从line乘HPV16。我是这样想的:

代码语言:javascript
复制
matches = tree.xpath('//phylo:name[text()='+line[0]+']', namespaces=nsmap)

然而,这似乎不起作用!我们将一如既往地感谢您的帮助。

编辑:我根据请求从xml文件中添加了几行:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 07:56:43

您忘记了XPath表达式中的引号:

代码语言:javascript
复制
>>> '//phylo:name[text()='+line[0]+']'
'//phylo:name[text()=something]'

我会这样做:

代码语言:javascript
复制
>>> '//phylo:name[text()="%s"]' % line[0]
'//phylo:name[text()="something"]'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11962474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档