我有很多包含大量文本的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> <试验>也?
最佳答案 您实际上似乎没有使用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)