Python中的C扩展:将Conver wchar字符串转换为Python值

时间:2013-03-01 08:29:54

标签: python python-c-extension

在Python的C扩展中,我可以使用Py_BuildValue()将Conver char字符串转换为Python Value,如下所示:Py_BuildValue("s", str)。但是,如果字符串是wchar数组,则无法使用Py_BuildValue("s", str)

我想我可以像这样使用PyUnicode:

PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );
PyObject *val = Py_BuildValue("o", pb);

但是,它不起作用。如何将wchar字符串转换为Python值?

1 个答案:

答案 0 :(得分:2)

我认为您无需合并PyUnicode_FromUnicodePy_BuildValue

以下pb已经是Python unicode对象。

PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );

使用Py_BuildValue来处理它是多余的,但它是无害的。 我认为您的问题是由格式错误o引起的。它应该是O

您还可以使用Py_BuildValue将Unicode(UCS-2或UCS-4)数据的以null结尾的缓冲区转换为Python Unicode对象。
例如:

const wchar_t *w = L"Hello world!";
PyObject* pb = Py_BuildValue("u", w);

更多