[英]How do I get string representation of PyObject in Python3?
我正在调试Python源代码(CPython 3.4)。 我正在收到PyObject *。 我想printf
它。
例如(来自Python 3.4的Objects / floatobject.c源代码):
PyObject *o_ndigits = NULL;
Py_ssize_t ndigits;
x = PyFloat_AsDouble(v);
if (!PyArg_ParseTuple(args, "|O", &o_ndigits))
return NULL;
如何printf
o_ndigits? 它与这个问题几乎相同: Python:获取PyObject的字符串表示形式? ,但对于Python3。 使用原始解决方案,我得到了"undefined reference to PyString_AsString"
错误。
PyObject_Repr
和PyObject_ASCII
返回对象的unicode str
表示。 如果您的终端不使用UTF-8,您可能需要ASCII转义表示。 使用PyUnicode_AsUTF8
或PyUnicode_AsUTF8AndSize
获取多字节字符串。 3.3中的新实现缓存了UTF-8字节字符串,因此在打印后不要取消分配它。
至于PyString_AsString
,,成为PyBytes_AsString
或PyBytes_AS_STRING
为3.X bytes
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.