我正在开发一个解析路透社数据集的各种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>
个标签,一次一个,并处理其内容。