String/Bytes Objects

当需要字符串参数时,这些函数会引发TypeError,并使用非字符串参数进行调用。

Note

这些Function在 Python 3.x 中已重命名为 PyBytes_ *。除非另有说明,否则 3.x 中可用的 PyBytes 函数被别名为 PyString_ *等效项以帮助移植。

在版本 2.2 中更改:接受允许的子类型。

2.2 版中的新Function。

返回一个新的字符串对象,成功时返回字符串* v 的副本,失败时返回 NULL 的副本。参数 v 不能为 NULL *;它不会被检查。

返回一个新的字符串对象,成功时返回字符串* v 的副本,成功时返回 len 的长度,失败时返回 NULL 的副本。如果 v NULL *,则字符串的内容未初始化。

在版本 2.5 中更改:此函数为 len 使用int类型。这可能需要更改您的代码以正确支持 64 位系统。

采取 C printf()样式的* format 字符串和可变数量的参数,计算所得 Python 字符串的大小,然后返回带有格式化后的值的字符串。变量参数必须是 C 类型,并且必须与 format *字符串中的格式字符完全对应。允许使用以下格式字符:

Format Characters Type Comment
%% n/a Literals%字符。
%c int 单个字符,表示为 C int。
%d int 完全等效于printf("%d")
%u unsigned int 完全等效于printf("%u")
%ld long 完全等效于printf("%ld")
%lu unsigned long 完全等效于printf("%lu")
%lld long long 完全等效于printf("%lld")
%llu 无符号长久 完全等效于printf("%llu")
%zd Py_ssize_t 完全等效于printf("%zd")
%zu size_t 完全等效于printf("%zu")
%i int 完全等效于printf("%i")
%x int 完全等效于printf("%x")
%s char* 空终止的 C 字符数组。
%p void* C 指针的十六进制表示。除平台printf产生什么结果外,它保证以立即数0x开头,因此与printf("%p")基本等效。

无法识别的格式字符会导致将其余所有格式字符串按原样复制到结果字符串,并丢弃所有多余的参数。

Note

仅在定义HAVE_LONG_LONG时,“%lld”和“%llu”格式说明符才可用。

在 2.7 版中进行了更改:添加了对“%lld”和“%llu”的支持。

PyString_FromFormat()相同,除了它只接受两个参数。

在版本 2.5 中进行了更改:此函数返回了int类型。这可能需要更改您的代码以正确支持 64 位系统。

在版本 2.5 中更改:此宏返回int类型。这可能需要更改您的代码以正确支持 64 位系统。

该函数接受字符串和 Unicode 对象作为 Importing。对于 Unicode 对象,它返回对象的默认编码版本。如果* length NULL *,则结果缓冲区可能不包含 NUL 字符;如果是,函数将返回-1并引发TypeError

该缓冲区引用* obj 的内部字符串缓冲区,而不是副本。除非以PyString_FromStringAndSize(NULL, size)创建字符串,否则不得以任何方式修改数据。不能释放它。如果 string 是 Unicode 对象,则此函数将计算 string 的默认编码并对其进行操作。如果 string *根本不是字符串对象,则PyString_AsStringAndSize()返回-1并引发TypeError

在版本 2.5 中进行了更改:此函数将int *类型用于* length *。这可能需要更改您的代码以正确支持 64 位系统。

在版本 2.5 中更改:此函数对* newsize *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

从* format args *返回一个新的字符串对象。类似于format % args。 * args *参数必须是 Tuples 或 dict。

Note

此Function在 3.x 中不可用,并且没有 PyBytes 别名。

PyString_FromString()PyString_InternInPlace()的组合,返回已被嵌入的新字符串对象,或者返回对具有相同值的更早被嵌入的字符串对象的新(“拥有”)引用。

Note

此Function在 3.x 中不可用,并且没有 PyBytes 别名。

pass使用为* encoding 注册的编解码器解码 s 大小的已编码缓冲区来创建对象。 * encoding errors 与unicode()内置函数中具有相同名称的参数具有相同的含义。使用 Python 编解码器注册表查找要使用的编解码器。如果编解码器引发异常,则返回 NULL *。

Note

此Function在 3.x 中不可用,并且没有 PyBytes 别名。

在版本 2.5 中进行了更改:此Function为* size *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

pass将字符串对象传递给注册为* encoding *的编解码器来解码,并将结果作为 Python 对象返回。 * encoding errors 与字符串encode()方法中具有相同名称的参数具有相同的含义。使用 Python 编解码器注册表查找要使用的编解码器。如果编解码器引发异常,则返回 NULL *。

Note

此Function在 3.x 中不可用,并且没有 PyBytes 别名。

pass将给定大小的char缓冲区传递到为* encoding *注册的编解码器中进行编码,并返回一个 Python 对象。 * encoding errors 与字符串encode()方法中具有相同名称的参数具有相同的含义。使用 Python 编解码器注册表查找要使用的编解码器。如果编解码器引发异常,则返回 NULL *。

Note

此Function在 3.x 中不可用,并且没有 PyBytes 别名。

在版本 2.5 中进行了更改:此Function为* size *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

使用为* encoding *注册的编解码器对字符串对象进行编码,然后将结果作为 Python 对象返回。 * encoding errors 与字符串encode()方法中具有相同名称的参数具有相同的含义。使用 Python 编解码器注册表查找要使用的编解码器。如果编解码器引发异常,则返回 NULL *。

Note

此Function在 3.x 中不可用,并且没有 PyBytes 别名。

首页