On 26.10.16 23:47, Peter Otten wrote:
    def mynamereplace(exc):
        return u"".join(
            "\\N{%s}" % unicodedata.name(c)
            for c in exc.object[exc.start:exc.end]
        ), exc.end
    codecs.register_error("namereplace", mynamereplace)

Not all characters has standard name. This fails with say '\x80'. Use backslash escaping as a fallback:

try:
    ascii
except NameError:
    ascii = repr
def mynamereplace(exc):
    repl = []
    for c in exc.object[exc.start:exc.end]:
        try:
            repl.append("\\N{%s}" % unicodedata.name(c))
        except ValueError:
            repl.append(ascii(c)[1:-1])
    return u"".join(repl), exc.end


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to