#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