如何使用Python将unicode字符串转换为大写/小写/标题大小写';s C API避免Python 3.3中不推荐的函数?

如何使用Python将unicode字符串转换为大写/小写/标题大小写';s C API避免Python 3.3中不推荐的函数?,python,c,api,unicode,Python,C,Api,Unicode,如中所述 , Py_UNICODE_TOUPPER和friends自从python3.3实现pep393以来就被弃用了。然而,似乎没有任何替代品。特别是,C API似乎不允许调用诸如“abc”.upper()之类的方法的底层C函数 这是否意味着自Python 3.3以来,C API不再支持这些基本的str转换?有什么解决方法吗?您可以调用这些方法。看 例如: test.c #包括 __declspec(dllexport) PyObject*上限(PyObject*参数){ 返回PyObject

如中所述

,

Py_UNICODE_TOUPPER和friends自从python3.3实现pep393以来就被弃用了。然而,似乎没有任何替代品。特别是,C API似乎不允许调用诸如“abc”.upper()之类的方法的底层C函数


这是否意味着自Python 3.3以来,C API不再支持这些基本的str转换?有什么解决方法吗?

您可以调用这些方法。看

例如:

test.c

#包括
__declspec(dllexport)
PyObject*上限(PyObject*参数){
返回PyObject_CallMethod(arg,“upper”,NULL);
}
使用
ctypes
进行演示:

>>从ctypes导入*
>>>dll=PyDLL(“./test”)
>>>dll.upper.argtypes=py_对象,
>>>dll.upper.restype=py\u对象
>>>dll.upper('hello')
“你好”