使用Python ElementTree提取XML标签中的文本

时间:2012-06-16 16:02:03

标签: python xml

我有一个包含数万个XML文件(小文件)的语料库,我正在尝试使用Python并提取其中一个XML标记中包含的文本,例如,身体标记之间的所有内容:

<body> sample text here with <bold> nested </bold> tags in this paragraph </body>

然后编写包含此字符串的文本文档,然后向下移动XML文件列表。

我正在使用effbot的ELementTree但无法找到正确的命令/语法来执行此操作。我找到了一个使用miniDOM的dom.getElementsByTagName的网站,但我不确定ElementTree的相应方法是什么。任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:2)

更好的答案,展示如何实际使用XML解析来执行此操作:

import xml.etree.ElementTree as ET
stringofxml = "<body> sample text here with <bold> nested </bold> tags in this paragraph </body>"

def extractTextFromElement(elementName, stringofxml):
    tree = ET.fromstring(stringofxml)
    for child in tree:
        if child.tag == elementName:
            return child.text.strip()

print extractTextFromElement('bold', stringofxml)

答案 1 :(得分:1)

我只想用re:

import re
body_txt = re.match('<body>(.*)</body>',body_txt).groups()[0]

然后删除内部标签:

body_txt = re.sub('<.*?>','',body_txt)

你不应该在不需要时使用regexp,这是真的......但是当它们使用时没有任何问题。