python - pyquery (lxml) 在结构良好的 XML 文档中找不到标签?

标签 python lxml pyquery

我有一个看起来像 this 的 XML 文件.相关的部分是这样的:

<reference>
  <citation>Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for treatment of night eating syndrome: a 12-week, randomized, placebo-controlled trial. J Clin Psychopharmacol. 2012 Jun;32(3):341-5. doi: 10.1097/JCP.0b013e318254239b.</citation>
  <PMID>22544016</PMID>
</reference>

我试图找到 PMID 字段的值,使用 PyQuery 解析 XML:

    from pyquery import PyQuery as pq

    text = open(f, 'r').read()
    d = pq(text)
    data = {}       
    data['nct_id'] = d('nct_id').text()

    print d('reference')
    reference = d('reference')
    print reference('PMID')
    data['pmid'] = reference('PMID').text()

    print data['PMID']

为什么这不起作用?在控制台中,我看到了第一个打印语句中 reference 的完整内容,后跟两个空值:

<reference>
    <citation>Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for treatment of night eating syndrome: a 12-week, randomized, placebo-controlled trial. J Clin Psychopharmacol. 2012 Jun;32(3):341-5. doi: 10.1097/JCP.0b013e318254239b.</citation>
    <PMID>22544016</PMID>
  </reference>

我可以使用 .find() 找到文档中的其他叶节点(如 nct_id),如示例代码所示。

是PyQuery不喜欢大写标签吗?

最佳答案

您可以指定要使用的解析器,它将起作用:

d = pq(text, parser='xml')

关于python - pyquery (lxml) 在结构良好的 XML 文档中找不到标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128909/

相关文章:

python - Pandas html : Don't truncate long values

python - 计算在 Selenium Python 中打开的选项卡数量

python - 当我将标签添加到解析树时,lxml 中的 pretty-print 失败

python - 安装 pyquery mac

python - 当完全限定对象类与限定类不同时,isinstance() 返回 false

Python - 用于从文本中获取特定行的正则表达式

python - 生成使用默认命名空间的 XML

python - 从滚动时添加新表格的页面中抓取 HTML 数据

python - 如何使用 PyQuery 获取表中多个 <td> 标签的文本内容?

gcc - 如何使用 pip 安装特定版本的包