nerezusЗависит от задачи. В общем случае фильтровать нетекстовые символы (все, а не только \0) надо на входе, т.е. при получении данных от пользователя, так как они могут многое сломать ещё до подстановки в шаблон. Хотя на выходе тоже не помешает.
def escapeHtml(s):
return s.replace('&', ‘&’).\
replace('"', ‘"’).\
replace('\'', ‘'’).\
replace('<', ‘<’).\
replace('>', ‘>’).\
replace('\0', '')
Достаточно безопасно? За основу взят http://php.net/htmlspecialchars и добавлено \0
Замена нетекстовых символов (см. http://www.w3.org/TR/REC-xml#NT-Char):
re.compile(ur'', re.U).sub(replacement, text)
где replacement - ‘', ’?' или u'\uFFFD' на ваше усмотрение.
Для спецсимволов HTML/XML есть cgi.escape(), xml.sax.saxutils.escape().