我使用Python 2.x的[没得商量]读取XML文档[他人创建],使许多元素的内容包含不使用转义他们有效的XML字符的字符_xHHHH_
约定如ASCII BEL又名U + 0007是由7个字符的序列所表示的u"_x0007_"
。 既不,允许任何旧的字符在文档中,也没有逃逸的方式表示的功能是协商的。 我解析使用cElementTree或LXML [半转让]的文件。
这是在尽可能有效地unescapeing解析器输出我的最好的尝试:
import re
def unescape(s,
subber=re.compile(r'_x[0-9A-Fa-f]{4,4}_').sub,
repl=lambda mobj: unichr(int(mobj.group(0)[2:6], 16)),
):
if "_" in s:
return subber(repl, s)
return s
以上是通过在典型的文本观测的“_”非常低的频率和偏压通过避免正则表达式装置尽可能一个好于加倍速度的。
问题:任何更好的想法了吗?