我正在尝试使用Python来删除文档中的XML标记,这是我新手使用的语言。这是我第一次尝试使用正则表达式,whixh真的是一个希望最好的想法。
mfile = file("somefile.xml","w")
for line in mfile:
re.sub('<./>',"",line) #trying to match elements between < and />
悲惨地失败了。我想知道如何使用正则表达式。
其次,我用Google搜索并找到:http://code.activestate.com/recipes/440481-strips-xmlhtml-tags-from-string/
似乎有用。但我想知道有没有更简单的方法来摆脱所有的xml标签?也许使用ElementTree?
答案 0 :(得分:22)
最可靠的方法是使用LXML。
from lxml import etree
...
tree = etree.parse('somefile.xml')
notags = etree.tostring(tree, encoding='utf8', method='text')
print(notags)
它将避免使用正则表达式“解析”XML的问题,并且应该正确处理转义和所有内容。
答案 1 :(得分:11)
在不需要lxml外部库的情况下替代Jeremiah的答案:
import xml.etree.ElementTree as ET
...
tree = ET.fromstring(Text)
notags = ET.tostring(tree, encoding='utf8', method='text')
print(notags)
可以使用任何Python&gt; = 2.5
答案 2 :(得分:0)
请注意,通常用正则表达式来表达是不正常的。请参阅Jeremiah answer。
试试这个:
import re
text = re.sub('<[^<]+>', "", open("/path/to/file").read())
with open("/path/to/file", "w") as f:
f.write(text)