Код интереса, кажется, это :
if (c == quote || c == '\\')
*p++ = '\\', *p++ = c;
else if (c == '\t')
*p++ = '\\', *p++ = 't';
else if (c == '\n')
*p++ = '\\', *p++ = 'n';
else if (c == '\r')
*p++ = '\\', *p++ = 'r';
else if (c < ' ' || c >= 0x7f) {
*p++ = '\\';
*p++ = 'x';
*p++ = Py_hexdigits[(c & 0xf0) >> 4];
*p++ = Py_hexdigits[c & 0xf];
}
else
*p++ = c;
Если c < ' ' || c >= 0x7f
, используется escape-последовательность с \x
. (0x7f
- 127, кстати). Все до ' '
в таблице ASCII является специальным символом. См. http://www.asciitable.com/. Все в первом столбце будет экранировано repr
. Обратите внимание, что обратные слэши, кавычки, разрывы строк, возврат каретки и табуляция считаются особыми случаями.