Napis Konwersja i formatowanie ciągów znaków¶
funkcja do konwersji liczb i formatowania napis wyjście.
-
int PyOS_snprintf(char *str, size_t size, const char *format, ...)¶
- Część stabilnego ABI.
Wyjście nie więcej niż size bajtów do str zgodnie z format napis format i ekstra argument. Zobacz stronę podręcznika Unix snprintf(3).
-
int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)¶
- Część stabilnego ABI.
Wyprowadzaj nie więcej niż size bajtów do str zgodnie z ciągiem format napis ującym format i listą argument ów zmiennych va. Strona podręcznika systemu Unix vsnprintf(3).
PyOS_snprintf() I PyOS_vsnprintf() owinąć Standardowe C biblioteka funkcja snprintf() I vsnprintf(). Ich cel jest zagwarantowanie spójnego zachowanie w skrajnych przypadkach, czego nie zapewniają Standardowe C funkcje języka C.
Wraptory zapewniają, że str[size-1] zawsze jest to '\0' wartość zwracać. Nigdy nie zapisują więcej niż size bajtów (wliczając końcowy``»0»`` ) do str. Obie funkcja wymagają aby str != NULL, size > 0, format != NULL i size < INT_MAX. Należy pamiętać, że oznacza to brak odpowiednika C99 n = snprintf(NULL, 0, ...), który określałby wymagany rozmiar bufor size.
The zwracana wartość (rv) dla tych funkcja należy interpretować je następująco:
Gdy
0 <= rv < size, konwersja danych wyjściowych zakończyła się powodzeniem, a znaki rv znak zapisane w str (z wyłączeniem końcowego'\0'bajt o godzstr[rv])Gdy
rv >= size, konwersja wyjściowa została skrócona, a bufor zrv + 1bajtów byłoby potrzebnych do osiągnięcia sukcesu.str[size-1]w'\0'tym przypadku.Gdy
rv < 0, konwersja wyjściowa nie powiodła się istr[size-1]w'\0'W tym przypadku również, ale reszta str jest niezdefiniowana. Dokładna przyczyna błędu zależy od platformy bazowej.
Poniższe funkcje umożliwiają niezależną od ustawień regionalnych napis konwersję ciągów znaków na liczby.
-
unsigned long PyOS_strtoul(const char *str, char **ptr, int base)¶
- Część stabilnego ABI.
Konwertuj początkową część ciągu napis na
strdo wartości unsigned long zgodnie z podanymbase, który musi zawierać się pomiędzy2i36inkluzywny lub będący szczególną wartość,0.Spacje wiodące i wielkość liter są znak ignorowane. Jeśli
basejest zero, szuka wiodącego0b,0olub0xaby wskazać bazę. Jeżeli ich brakuje, domyślnie10. Podstawa musi wynosić 0 lub mieścić się w przedziale od 2 do 36 (włącznie). Jeśliptrjest różna od 0NULL, będzie zawierać wskaźnik do końca skanowania.Jeśli przekonwertowana wartość wykracza poza zakres odpowiedniego typu zwracać zwracanego, występuje błąd zakresu (
errnojest ustawiony naERANGE) iULONG_MAXzwracana jest wartość. Jeśli nie można wykonać konwersji,0zwracana jest wartość .patrz również the Unix man page strtoul(3).
Dodane w wersji 3.2.
-
long PyOS_strtol(const char *str, char **ptr, int base)¶
- Część stabilnego ABI.
Konwertuj początkową część napis ciągu na
strdo long wartość zgodnie z podanymbase, która musi być pomiędzy2i36włącznie, lub być wartość specjalną0.Taki sam jak
PyOS_strtoul(), Ale zwracać A long wartość zamiast iLONG_MAXna przepełnieniach.patrz również the Unix man page strtol(3).
Dodane w wersji 3.2.
-
double PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception)¶
- Część stabilnego ABI.
Konwertuj ciąg napis
sa double, rzucić a Python Wyjątek w przypadku błędu. Zestaw akceptowanych ciągów napis znaków odpowiada zestawowi ciągów znaków akceptowanychfloat`przez konstruktor Python ``s`(), z tym wyjątkiem, że nie mogą one zawierać spacji na początku ani na końcu. Konwersja jest niezależna od bieżącej lokalizacji.Jeśli
endptrjestNULL, przekonwertować cały napis. RzucićValueErrorI zwracać-1.0jeśli napis nie jest ważny prawidłową reprezentacją liczby zmiennoprzecinkowej.Jeśli endptr jest różny od
NULL, konwertuj tak dużą część napis jak to możliwe*endptr, i ustaw wskaźnik na pierwszy nieprzekonwertowany znak. Jeżeli żaden początkowy segment napis nie jest ważny prawidłową reprezentacją liczby zmiennoprzecinkowej, ustaw go tak*endptr, aby wskazywał na początek napis, rzucić zgłoś wyjątek ValueError i zwracać-1.0.Jeśli
sreprezentować wartość który jest zbyt duży, aby go przechowywać w obiekcie typu float (na przykład, jest takim ciągiem napis na wielu platformach) to jeślioverflow_exceptionjestNULLzwracaćINFINITY`(z odpowiednim znakiem) i nie ustawiaj żadnego wyjątku. W, ``overflow_exception`przeciwnym razie musi wskazywać na obiekt wyjątku Pythona; zgłoś ten rzucić wyjątek i zwracać-1.0. W obu przypadkach ustaw tak*endptr, aby wskazywał na pierwszy znak po przekonwertowanej wartośc.Jeżeli podczas konwersji wystąpi jakikolwiek inny błąd (na przykład błąd braku pamięci), ustaw odpowiedni wyjątek Pythona i zwracać
-1.0.Dodane w wersji 3.1.
-
char *PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)¶
- Część stabilnego ABI.
Konwertuje double val na napis ciąg znaków przy użyciu dostarczonych format_code, precision i flags.
format_code must be one of
'e','E','f','F','g','G'or'r'. For'r', the supplied precision must be 0 and is ignored. The'r'format code specifies the standardrepr()format.flags can be zero or more of the following values or-ed together:
-
Py_DTSF_SIGN¶
Always precede the returned string with a sign character, even if val is non-negative.
-
Py_DTSF_ADD_DOT_0¶
Ensure that the returned string will not look like an integer.
-
Py_DTSF_ALT¶
Apply „alternate” formatting rules. See the documentation for the
PyOS_snprintf()'#'specifier for details.
-
Py_DTSF_NO_NEG_0¶
Negative zero is converted to positive zero.
Dodane w wersji 3.11.
If ptype is non-
NULL, then the value it points to will be set to one of the following constants depending on the type of val:*ptype
type of val
-
Py_DTST_FINITE¶
finite number
-
Py_DTST_INFINITE¶
infinite number
-
Py_DTST_NAN¶
not a number
The return value is a pointer to buffer with the converted string or
NULLif the conversion failed. The caller is responsible for freeing the returned string by callingPyMem_Free().Dodane w wersji 3.1.
-
Py_DTSF_SIGN¶
-
int PyOS_mystricmp(const char *str1, const char *str2)¶
-
int PyOS_mystrnicmp(const char *str1, const char *str2, Py_ssize_t size)¶
- Część stabilnego ABI.
Porównywanie ciągów znaków bez uwzględniania wielkości napis liter. Funkcja te działają niemal identycznie
strcmp()Istrncmp()(odpowiednio), z tą różnicą, że ignorują wielkość liter znak ASCII.Return
0if the strings are equal, a negative value if str1 sorts lexicographically before str2, or a positive value if it sorts after.W argumentach str1 lub str2 bajt NUL oznacza koniec napis. For
PyOS_mystrnicmp(), Argument size podaje maksymalny rozmiar napis ciągu, tak jakby pod indeks określonym przez size znajdowała się wartość NUL.These functions do not use the locale.
-
int PyOS_stricmp(const char *str1, const char *str2)¶
-
int PyOS_strnicmp(const char *str1, const char *str2, Py_ssize_t size)¶
Porównywanie ciągów znaków bez uwzględniania wielkości napis.
W systemie Windows są to odpowiednio alias
stricmp()istrnicmp(), .Na innych platformach są to odpowiednio alias
PyOS_mystricmp()iPyOS_mystrnicmp().
Klasyfikacja i znak konwersja postaci¶
Poniższe makro zapewniają niezależną od ustawień regionalnych (w przeciwieństwie do biblioteka standardowa C ctype.h) klasyfikację i konwersję znak. Argument musi być znakiem lub znakiem char.
-
Py_ISALNUM(c)¶
Return true if the character c is an alphanumeric character.
-
Py_ISALPHA(c)¶
Return true if the character c is an alphabetic character (
a-zandA-Z).
-
Py_ISDIGIT(c)¶
Return true if the character c is a decimal digit (
0-9).
-
Py_ISLOWER(c)¶
Zwraca prawda wartość true, jeśli znak c jest małą literą ASCII (
a-z).
-
Py_ISUPPER(c)¶
Zwraca prawda jeśli znak c to wielka litera ASCII (
A-Z).
-
Py_ISSPACE(c)¶
Return true if the character c is a whitespace character (space, tab, carriage return, newline, vertical tab, or form feed).
-
Py_ISXDIGIT(c)¶
Return true if the character c is a hexadecimal digit (
0-9,a-f, andA-F).
-
Py_TOLOWER(c)¶
Zwraca odpowiednik małej litery znak c.
-
Py_TOUPPER(c)¶
Zwraca odpowiednik wielkiej litery znak c.