我有很多包含大量文本的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>
?
答案 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)