12

我正在尝试使用 Python 从文档中删除 XML 标记,Python 是一种我是新手的语言。这是我第一次尝试使用正则表达式,whixh 确实是一个最好的想法。

mfile = file("somefile.xml","w")

for line in mfile:
    re.sub('<./>',"",line) #trying to match elements between < and />

那惨遭失败。我想知道应该如何使用正则表达式。

其次,我用谷歌搜索发现:http ://code.activestate.com/recipes/440481-strips-xmlhtml-tags-from-string/

这似乎有效。但我想知道有没有更简单的方法来摆脱所有 xml 标签?也许使用元素树?

4

3 回答 3

24

最可靠的方法可能是使用LXML

from lxml import etree
...
tree = etree.parse('somefile.xml')
notags = etree.tostring(tree, encoding='utf8', method='text')
print(notags)

它将避免使用正则表达式“解析”XML 的问题,并且应该正确处理转义和所有事情。

于 2012-10-10T16:23:38.513 回答
15

不需要 lxml 外部库的耶利米答案的替代方案:

import xml.etree.ElementTree as ET
...
tree = ET.fromstring(Text)
notags = ET.tostring(tree, encoding='utf8', method='text')
print(notags)

应该适用于任何 Python >= 2.5

于 2013-09-03T11:16:52.307 回答
4

请注意,通常用正则表达式来做是不正常的。见耶利米的回答

试试这个:

import re

text = re.sub('<[^<]+>', "", open("/path/to/file").read())
with open("/path/to/file", "w") as f:
    f.write(text)
于 2012-10-10T15:59:06.527 回答