我正在开发一个程序来解析路透社数据集的各种 sgml 文件。但是我发现的文档不包含包含所有子节点的根节点。它只是在 DTD 之后有一组<reuters>..</reuters>
标签。所以解析树并使用getroot()
只给出第一个<reuters>
标签,而不是整个列表。如何在不更改输入文件的情况下解决它?我的代码如下:
import os
from lxml import etree as ET
dirname = 'dataset'
for filename in os.listdir(dirname):
filepath = os.path.join(dirname, filename)
parser = ET.parser(encoding='utf-8', recover=True)
tree = ET.parse(filepath, parser)
root = tree.getroot()
这个根元素只是第一个<reuters>
标签,而 sgml 文件如下:
<!DOCTYPE lewis SYSTEM "lewis.dtd">
<reuters> .. </reuters>
<reuters> .. </reuters>
<reuters> .. </reuters>
我想要的是拥有所有<reuters>
标签,一次一个,并处理它们的内容。