如何使用python忽略许多XML文件中的标记

时间:2012-10-12 19:26:42

标签: python xml xml-parsing

我有很多包含大量文本的xml文件。本文我需要做小写并删除标点符号。 但我不知道怎么说使用python,我希望它忽略所有的标签。

我找到了一个名为ElementTree的xml解析器,我有一个正则表达式来查找标签: pattern = re.compile ('<[^<]*?>')

我测试了它,它只给我第一个标签中的文字(有许多标签命名)。为什么呢?

我在字符串中测试以进行不同的测试以获得所有标记:

text = "<root> <test>aaaaaaa </test> <test2> bbbbbbbbb </test2> </root> <root> <test3> cccccc </test3> <test4> ddddd </test4> </root>"
pattern = re.compile ('<[^<]*?>')
tmp = pattern.findall(content, re.DOTALL)

它给了我:

['</test>', '<test2>', '</test2>', '</root>', '<root>', '<test3>', '</test3>', '<test4>', '</test4>', '</root>']

为什么不<root> <test>

1 个答案:

答案 0 :(得分:7)

您实际上似乎没有使用ElementTree。

Here是如何使用ElementTree

的示例
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()

您可以使用递归通过函数运行所有标记来清理它们:

def clean_tag(tag):
    for child in tag:
        clean_tag(child)
    if tag.text != None:
        # add your code to do lowercase and punctuation here
        tag.text = tag.text.lower()

clean_tag(tree.getroot())
clean_xml = ET.tostring(tree)