4
我正在使用Python 2.x [not negotiable]來讀取其他人創建的XML文檔,它允許許多元素的內容通過轉義來包含無效的XML字符使用例如_xHHHH_
慣例ASCII BEL aka U + 0007由7個字符的序列u"_x0007_"
表示。不允許在文檔中表示任何舊字符的功能或轉義方式都是可以協商的。我正在使用cElementTree或lxml解析文檔[semi-negotiable]。Unescape _xHHHH_使用Python的XML轉義序列
這裏以儘可能有效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
以上是由典型的文本觀察的頻率非常低「_」偏壓和好於加倍在可能的情況下避免使用正則表達式的速度。
問題:有更好的想法嗎?
檢查'_x'的速度稍慢(Python 2.6),並且在2.3之前的Pythons上不起作用。 – 2009-06-23 04:21:51