繁体   English   中英

如何在Python3中获取PyObject的字符串表示?

[英]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_ReprPyObject_ASCII返回对象的unicode str表示。 如果您的终端不使用UTF-8,您可能需要ASCII转义表示。 使用PyUnicode_AsUTF8PyUnicode_AsUTF8AndSize获取多字节字符串。 3.3中的新实现缓存了UTF-8字节字符串,因此在打印后不要取消分配它。

至于PyString_AsString ,,成为PyBytes_AsStringPyBytes_AS_STRING为3.X bytes类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM