文字列/バイトオブジェクト
これらの関数は、文字列パラメーターを予期するときにTypeError
を発生させ、非文字列パラメーターで呼び出されます。
ノート
これらの関数は、Python3.xでPyBytes_ *に名前が変更されました。 特に明記されていない限り、3.xで使用可能なPyBytes関数は、移植を支援するために同等のPyString_ *にエイリアスされます。
- type PyStringObject
- PyObject のこのサブタイプは、Python文字列オブジェクトを表します。
- PyTypeObject PyString_Type
- PyTypeObject のこのインスタンスは、Python文字列型を表します。 Pythonレイヤーの
str
およびtypes.StringType
と同じオブジェクトです。 .
- int PyString_Check(PyObject *o)
オブジェクト o が文字列オブジェクトまたは文字列型のサブタイプのインスタンスである場合、trueを返します。
バージョン2.2で変更:サブタイプの受け入れを許可しました。
- int PyString_CheckExact(PyObject *o)
オブジェクト o が文字列オブジェクトであるが、文字列型のサブタイプのインスタンスではない場合、trueを返します。
バージョン2.2の新機能。
- PyObject *PyString_FromString(const char *v)
- 成功した場合は文字列 v のコピーを値として、失敗した場合は NULL を含む新しい文字列オブジェクトを返します。 パラメータ v は NULL であってはなりません。 チェックされません。
- PyObject *PyString_FromStringAndSize(const char *v, Py_ssize_t len)
成功した場合は文字列 v のコピーを値と長さ len として、失敗した場合は NULL を含む新しい文字列オブジェクトを返します。 v が NULL の場合、文字列の内容は初期化されていません。
バージョン2.5で変更:この関数は、 len に
int
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- PyObject *PyString_FromFormat(const char *format, ...)
C
printf()
スタイルの format 文字列と可変数の引数を取り、結果のPython文字列のサイズを計算し、値がフォーマットされた文字列を返します。 可変引数はCタイプである必要があり、 format 文字列のフォーマット文字に正確に対応している必要があります。 次のフォーマット文字を使用できます。文字のフォーマット
タイプ
コメント
%%
該当なし
The literal % character.
%c
int
Cintとして表される単一の文字。
%d
int
printf("%d")
とまったく同じです。%u
unsigned int
printf("%u")
とまったく同じです。%ld
長いです
printf("%ld")
とまったく同じです。%lu
unsigned long
printf("%lu")
とまったく同じです。%lld
長い長い
printf("%lld")
とまったく同じです。%llu
unsigned long long
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
空所*
Cポインターの16進表現。 プラットフォームの
printf
が何を生成するかに関係なく、リテラル0x
で開始することが保証されていることを除いて、printf("%p")
とほぼ同等です。認識されないフォーマット文字により、フォーマット文字列の残りのすべてがそのまま結果文字列にコピーされ、余分な引数は破棄されます。
ノート
“%lld” および“%llu” 形式指定子は、
HAVE_LONG_LONG
が定義されている場合にのみ使用できます。バージョン2.7で変更: “%lld” および“%llu” のサポートが追加されました。
- PyObject *PyString_FromFormatV(const char *format, va_list vargs)
- PyString_FromFormat()と同じですが、2つの引数を取る点が異なります。
- Py_ssize_t PyString_Size(PyObject *string)
文字列オブジェクト string の文字列の長さを返します。
バージョン2.5で変更:この関数は
int
タイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- Py_ssize_t PyString_GET_SIZE(PyObject *string)
PyString_Size()のマクロ形式ですが、エラーチェックはありません。
バージョン2.5で変更:このマクロは
int
タイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- char *PyString_AsString(PyObject *string)
- string の内容のNUL終了表現を返します。 ポインタは、コピーではなく、文字列の内部バッファを参照します。 文字列が
PyString_FromStringAndSize(NULL, size)
を使用して作成されたばかりでない限り、データを変更してはなりません。 割り当てを解除してはなりません。 string がUnicodeオブジェクトの場合、この関数は string のデフォルトのエンコーディングを計算し、それを操作します。 string が文字列オブジェクトではない場合、 PyString_AsString()は NULL を返し、TypeError
を発生させます。
- char *PyString_AS_STRING(PyObject *string)
- PyString_AsString()のマクロ形式ですが、エラーチェックはありません。 文字列オブジェクトのみがサポートされています。 Unicodeオブジェクトは渡さないでください。
- int PyString_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)
出力変数バッファおよび長さを介して、オブジェクト obj の内容のNUL終了表現を返します。
この関数は、文字列オブジェクトとUnicodeオブジェクトの両方を入力として受け入れます。 Unicodeオブジェクトの場合、オブジェクトのデフォルトのエンコードされたバージョンを返します。 length が NULL の場合、結果のバッファーにはNUL文字が含まれない可能性があります。 含まれている場合、関数は
-1
を返し、TypeError
が発生します。バッファは、コピーではなく、 obj の内部文字列バッファを参照します。 文字列が
PyString_FromStringAndSize(NULL, size)
を使用して作成されたばかりでない限り、データを変更してはなりません。 割り当てを解除してはなりません。 string がUnicodeオブジェクトの場合、この関数は string のデフォルトのエンコーディングを計算し、それを操作します。 string が文字列オブジェクトではない場合、 PyString_AsStringAndSize()は-1
を返し、TypeError
を発生させます。バージョン2.5で変更:この関数は、長さに
int *
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- string に追加された newpart の内容を含む、 * string に新しい文字列オブジェクトを作成します。 呼び出し元は新しい参照を所有します。 string の古い値への参照が盗まれます。 新しい文字列を作成できない場合でも、 string への古い参照は破棄され、 * string の値は NULL に設定されます。 適切な例外が設定されます。
- string に追加された newpart の内容を含む、 * string に新しい文字列オブジェクトを作成します。 このバージョンでは、 newpart の参照カウントが減少します。
- int _PyString_Resize(PyObject **string, Py_ssize_t newsize)
「不変」であるにもかかわらず、文字列オブジェクトのサイズを変更する方法。 これは、まったく新しい文字列オブジェクトを作成するためにのみ使用してください。 文字列がコードの他の部分ですでに認識されている可能性がある場合は、これを使用しないでください。 入力文字列オブジェクトのrefcountが1でない場合、この関数を呼び出すとエラーになります。 既存の文字列オブジェクトのアドレスを左辺値(書き込むことができます)として渡し、新しいサイズを希望します。 成功すると、 * string はサイズ変更された文字列オブジェクトを保持し、
0
が返されます。 * string のアドレスは入力値と異なる場合があります。 再割り当てが失敗した場合、 * string の元の文字列オブジェクトの割り当てが解除され、 * string が NULL に設定され、メモリ例外が設定され、-1
が返されます。バージョン2.5で変更:この関数は、 newsize に
int
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- format および args から新しい文字列オブジェクトを返します。
format % args
に類似しています。 args 引数は、タプルまたはdictである必要があります。
- void PyString_InternInPlace(PyObject **string)
引数 * string をインターンします。 引数は、Python文字列オブジェクトを指すポインタ変数のアドレスである必要があります。 * string と同じ既存のインターン文字列がある場合は、 * string を設定します(古い文字列オブジェクトの参照カウントをデクリメントし、インターンされた文字列オブジェクト)、それ以外の場合は、 * string をそのままにして、インターンします(参照カウントをインクリメントします)。 (明確化:参照カウントについては多くの話がありますが、この関数は参照カウントニュートラルと考えてください。呼び出し前にオブジェクトを所有している場合に限り、呼び出し後にオブジェクトを所有します。)
ノート
この関数は3.xでは使用できず、PyBytesエイリアスはありません。
- PyObject *PyString_InternFromString(const char *v)
PyString_FromString()と PyString_InternInPlace()の組み合わせで、インターンされた新しい文字列オブジェクト、または以前にインターンされた文字列オブジェクトへの新しい(「所有」)参照を返します。同じ値。
ノート
この関数は3.xでは使用できず、PyBytesエイリアスはありません。
- PyObject *PyString_Decode(const char *s, Py_ssize_t size, const char *encoding, const char *errors)
encoding に登録されているコーデックを使用して、エンコードされたバッファ s の size バイトをデコードしてオブジェクトを作成します。 encoding および errors は、 unicode()組み込み関数の同じ名前のパラメーターと同じ意味を持ちます。 使用するコーデックは、Pythonコーデックレジストリを使用して検索されます。 コーデックによって例外が発生した場合は、 NULL を返します。
ノート
この関数は3.xでは使用できず、PyBytesエイリアスはありません。
バージョン2.5で変更:この関数は、サイズに
int
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- PyObject *PyString_AsDecodedObject(PyObject *str, const char *encoding, const char *errors)
文字列オブジェクトを encoding に登録されているコーデックに渡してデコードし、結果をPythonオブジェクトとして返します。 encoding および errors は、文字列
encode()
メソッドの同じ名前のパラメーターと同じ意味を持ちます。 使用するコーデックは、Pythonコーデックレジストリを使用して検索されます。 コーデックによって例外が発生した場合は、 NULL を返します。ノート
この関数は3.xでは使用できず、PyBytesエイリアスはありません。
- PyObject *PyString_Encode(const char *s, Py_ssize_t size, const char *encoding, const char *errors)
指定されたサイズの
char
バッファーを、 encoding に登録されているコーデックに渡してエンコードし、Pythonオブジェクトを返します。 encoding および errors は、文字列encode()
メソッドの同じ名前のパラメーターと同じ意味を持ちます。 使用するコーデックは、Pythonコーデックレジストリを使用して検索されます。 コーデックによって例外が発生した場合は、 NULL を返します。ノート
この関数は3.xでは使用できず、PyBytesエイリアスはありません。
バージョン2.5で変更:この関数は、サイズに
int
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- PyObject *PyString_AsEncodedObject(PyObject *str, const char *encoding, const char *errors)
encoding に登録されているコーデックを使用して文字列オブジェクトをエンコードし、結果をPythonオブジェクトとして返します。 encoding および errors は、文字列
encode()
メソッドの同じ名前のパラメーターと同じ意味を持ちます。 使用するコーデックは、Pythonコーデックレジストリを使用して検索されます。 コーデックによって例外が発生した場合は、 NULL を返します。ノート
この関数は3.xでは使用できず、PyBytesエイリアスはありません。