Ethan Furman <et...@stoneleaf.us> wrote: > So, if %a is added it would act like: > > --------- > "%a" % some_obj > --------- > tmp = str(some_obj) > res = b'' > for ch in tmp: > if ord(ch) < 256: > res += bytes([ord(ch)] > else: > res += unicode_escape(ch) > --------- > > where 'unicode_escape' would yield something like "\u0440" ?
My patch on the tracker already implements %a, it's simple. Just call PyObject_ASCII() (same as ascii()) then call PyUnicode_AsLatin1String(s) to convert it to bytes and stick it in. PyObject_ASCII does not return non-ASCII characters, no decode error is possible. We could call _PyUnicode_AsASCIIString(s, "strict") instead if we are afraid for non-ASCII bytes coming out of PyObject_ASCII. Neil _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com