我正在为一个大型的xml文件而苦苦挣扎,该文件的根目录为“ articles”,并且在“ article>”标签下包含许多单独的文章。我希望为“文章”中的每个“文章”收集“ p”标签内的所有文本。一个“文章”可以具有多个“ p”标签,如下所示:
<articles>
<article title="Blah" published-at="2018-01-01" id="00000">
<p>Here is some text.</p>
<p>Another line of text.</p>
<a type="external" href="https://www.website.com/">Image</a>
<p>Final line of text.</p>
</article>
<article title="Second blah" published-at="2018-01-02" id="00001">
<p>Here is some new text.</p>
<p>Final line of new text.</p>
</article>
</articles>
所以我想做的是遍历每篇文章,并生成一行包含'p'标记中所有文本的行,而不关心如果我在'a'标记中拾取了链接和相关文本。
我希望这样的方法可以工作,但是它产生的文本文件没有被每个“文章”分开
text = []
for p in root.iter('p'):
text.append(p.text)
with open("text.txt", "w", encoding = 'utf-8') as output:
output.write(str(text))
我们将诚挚地感谢您的帮助,因为这对我来说很难在搜索中表达。
答案 0 :(得分:0)
Python拥有xml.etree.ElementTree库(除其他外),用于处理XML,您可以使用它进行以下操作:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
text = []
for article in root.findall('article'):
for paragraph in article.findall('p'):
text.append(paragraph.text)
paragraph.text = ''
tree.write('output.xml')