Управляющая строка Python C API

#python #c #python-3.x #embed #python-c-api

#python #c #python-3.x #Внедрить #python-c-api

Вопрос:

Я хочу использовать python C API для экранирования строки. Строка позже будет использоваться в python eval в качестве аргумента для метода Python, поэтому в настоящее время я использую эту конструкцию:

 char* Escape(char* string) {
    PyObject *var = PyUnicode_FromString(string);
    free(string);
    PyObject *varRepr = PyObject_Repr(var);
    char* str = PyUnicode_AsUTF8(varRepr);

    Py_DECREF(var);
    Py_DECREF(varRepr);

    return str;

}
  

Есть ли более эффективный способ?

Комментарии:

1. Лучшим способом было бы не использовать eval .

2. Я считаю, что также достаточно экранировать все символы <32 и кавычки, которые вы используете с octal или xhex