Перетворення та форматування рядків¶
Функції для перетворення чисел і виведення форматованого рядка.
-
int PyOS_snprintf(char *str, size_t size, const char *format, ...)¶
- Part of the Stable ABI.
Виводити не більше size байтів до str відповідно до рядка формату format і додаткових аргументів. Перегляньте сторінку довідки Unix snprintf(3).
-
int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)¶
- Part of the Stable ABI.
Виводити не більше size байтів до str відповідно до рядка формату format і списку змінних аргументів va. Довідкова сторінка Unix vsnprintf(3).
PyOS_snprintf() і PyOS_vsnprintf() обгортають стандартні функції бібліотеки C snprintf() і vsnprintf(). Їх мета полягає в тому, щоб гарантувати послідовну поведінку в кутових випадках, чого немає у стандартних функціях C.
The wrappers ensure that str[size-1] is always '\0' upon return. They
never write more than size bytes (including the trailing '\0') into str.
Both functions require that str != NULL, size > 0, format != NULL
and size < INT_MAX. Note that this means there is no equivalent to the C99
n = snprintf(NULL, 0, ...) which would determine the necessary buffer size.
Повернене значення (rv) для цих функцій слід інтерпретувати таким чином:
Коли
0 <= rv < size, вихідне перетворення було успішним і rv символи були записані в str (за винятком кінцевого байта'\0''уstr[rv]).Коли rv >= size, вихідне перетворення було скорочено, і для успіху знадобився буфер із rv + 1 байтами.
str[size-1]у цьому випадку є'\0''.Коли
rv < 0, «сталося щось погане».str[size-1]у цьому випадку також є'\0'', але решта str не визначена. Точна причина помилки залежить від основної платформи.
Наступні функції забезпечують перетворення рядка в число, незалежне від локалі.
-
unsigned long PyOS_strtoul(const char *str, char **ptr, int base)¶
- Part of the Stable ABI.
Convert the initial part of the string in
strto an unsigned long value according to the givenbase, which must be between2and36inclusive, or be the special value0.Leading white space and case of characters are ignored. If
baseis zero it looks for a leading0b,0oor0xto tell which base. If these are absent it defaults to10. Base must be 0 or between 2 and 36 (inclusive). Ifptris non-NULLit will contain a pointer to the end of the scan.If the converted value falls out of range of corresponding return type, range error occurs (
errnois set toERANGE) andULONG_MAXis returned. If no conversion can be performed,0is returned.See also the Unix man page strtoul(3).
Added in version 3.2.
-
long PyOS_strtol(const char *str, char **ptr, int base)¶
- Part of the Stable ABI.
Convert the initial part of the string in
strto an long value according to the givenbase, which must be between2and36inclusive, or be the special value0.Same as
PyOS_strtoul(), but return a long value instead andLONG_MAXon overflows.See also the Unix man page strtol(3).
Added in version 3.2.
-
double PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception)¶
- Part of the Stable ABI.
Convert a string
sto a double, raising a Python exception on failure. The set of accepted strings corresponds to the set of strings accepted by Python’sfloat()constructor, except thatsmust not have leading or trailing whitespace. The conversion is independent of the current locale.Якщо
endptrмає значенняNULL, перетворити весь рядок. ВикликайтеValueErrorі повертайте-1.0, якщо рядок не є дійсним представленням числа з плаваючою комою.Якщо endptr не дорівнює NULL, перетворіть якомога більшу частину рядка та встановіть
*endptrтак, щоб він вказував на перший неперетворений символ. Якщо жоден початковий сегмент рядка не є дійсним представленням числа з плаваючою комою, установіть*endptr, щоб вказувати на початок рядка, викликайте ValueError і поверніть-1.0.Якщо
sпредставляє значення, яке є надто великим для зберігання в float (наприклад,"1e500"є таким рядком на багатьох платформах), тодіoverflow_exceptionмає значенняNULLповернітьPy_HUGE_VAL(з відповідним знаком) і не встановлюйте винятків. В іншому випадкуoverflow_exceptionмає вказувати на об’єкт винятку Python; викликати цей виняток і повернути-1.0. В обох випадках встановіть*endptr, щоб вказувати на перший символ після перетвореного значення.Якщо під час перетворення виникає будь-яка інша помилка (наприклад, помилка браку пам’яті), установіть відповідний виняток Python і поверніть
-1.0.Added in version 3.1.
-
char *PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)¶
- Part of the Stable ABI.
Convert a double val to a string using supplied format_code, precision, and flags.
format_code має бути одним із
'e','E','f','F','g','G'або'r''. Для'r'надана точність має бути 0 і ігнорується. Код формату'r'визначає стандартний форматrepr().flags може мати нуль або більше значень
Py_DTSF_SIGN,Py_DTSF_ADD_DOT_0абоPy_DTSF_ALT, або об’єднані разом:Py_DTSF_SIGNозначає, що перед поверненим рядком завжди ставиться знак, навіть якщо val є невід’ємним.Py_DTSF_ADD_DOT_0означає, що повернутий рядок не буде виглядати як ціле число.Py_DTSF_ALTозначає застосування «альтернативних» правил форматування. Перегляньте документацію для специфікатораPyOS_snprintf()'#''для отримання детальної інформації.
Якщо ptype не є
NULL, тоді значення, на яке він вказує, буде встановлено на одне зPy_DTST_FINITE,Py_DTST_INFINITEабоPy_DTST_NAN, що означає, що val є кінцеве число, нескінченне число або не число відповідно.Поверненим значенням є вказівник на buffer із перетвореним рядком або
NULL, якщо перетворення не вдалося. Виклик відповідає за звільнення повернутого рядка шляхом викликуPyMem_Free().Added in version 3.1.
-
int PyOS_stricmp(const char *s1, const char *s2)¶
Case insensitive comparison of strings. The function works almost identically to
strcmp()except that it ignores the case.
-
int PyOS_strnicmp(const char *s1, const char *s2, Py_ssize_t size)¶
Case insensitive comparison of strings. The function works almost identically to
strncmp()except that it ignores the case.