【发布时间】:2020-11-27 19:55:33
【问题描述】:
我正在尝试在单个文档(标签)中检索具有相同文档编号的多个文本内容
我的 XML 文件如下所示:
<doc>
<docnum>1234</docnum>
<p>text1</p>
<p>text2</p>
<p>text3</p>
<p>text4</p>
<p>text5</p>
<docdesc>only text</docdesc>
</doc>
<doc>
<docnum>789</docnum>
<p>text1</p>
<p>text2</p>
<p>text3</p>
<p>text4</p>
<p>text5</p>
<docdesc>only and only texts</docdesc>
</doc>
但是 BeautifulSoup 的 find_all() 和 find() 方法不能单独提取它们。 我的代码 sn-p 如下:
from bs4 import BeautifulSoup
with open('file.xml', 'r') as openfile:
content = "".join(openfile.readlines())
soupcontent = BeautifulSoup(content, "lxml")
docnums = [str(t.text) for t in (soupcontent.findAll('docnum'))]
doctexts = [str(t.text) for t in (soupcontent.find_all('p'))]
for a, b in zip(docnums, doctexts):
print(a + '\n' + b)
但不是将 doc1 的 docnum 与 doc1 的所有 p 匹配,而是匹配所有内容。 每个 find_all() 中的嵌套 for 循环也无济于事。到达doc标签末尾时无法停止
【问题讨论】:
标签: python xml beautifulsoup