спецификация XML содержит список символов Unicode, которые либо незаконны, либо "обескуражены". Учитывая строку, как я могу удалить из нее все незаконные символы?
Я придумал следующее регулярное выражение, но это немного глоток.
illegal_xml_re = re.compile(u'[\x00-\x08\x0b-\x1f\x7f-\x84\x86-\x9f\ud800-\udfff\ufdd0-\ufddf\ufffe-\uffff]')
clean = illegal_xml_re.sub('', dirty)
(Python 2.5 не знает о символах Unicode выше 0xFFFF, поэтому нет необходимости их фильтровать.)