문자열 변환과 포매팅¶
숫자 변환과 포맷된 문자열 출력을 위한 함수.
-
int PyOS_snprintf(char *str, size_t size, const char *format, ...)¶
- 상의 안정 ABI.
포맷 문자열 format 과 추가 인자에 따라 size 바이트를 넘지 않도록 str로 출력합니다. 유닉스 매뉴얼 페이지 snprintf(3)를 보십시오.
-
int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)¶
- 상의 안정 ABI.
포맷 문자열 format 과 가변 인자 목록 va에 따라 size 바이트를 넘지 않도록 str로 출력합니다. 유닉스 매뉴얼 페이지 vsnprintf(3)를 보십시오.
PyOS_snprintf()와 PyOS_vsnprintf()는 표준 C 라이브러리 함수 snprintf()와 vsnprintf()를 감쌉니다. 그들의 목적은 경계 조건에서 표준 C 함수가 제공하지 않는 수준의 일관된 동작을 보장하는 것입니다.
래퍼는 반환 시 str[size-1]이 항상 '\0'이 되도록 합니다. str에 size 바이트(후행 '\0' 포함)를 초과해서 쓰지 않습니다. 두 함수 모두 str != NULL, size > 0, format != NULL 및 size < INT_MAX를 요구합니다. 이는 필요한 버퍼 크기를 결정하는 C99 n = snprintf(NULL, 0, ...)에 해당하는 것이 없다는 뜻임에 유의하십시오.
이 함수들의 반환 값(rv)은 다음과 같이 해석되어야 합니다:
0 <= rv < size일 때, 출력 변환에 성공했으며 rv 문자가 str에 기록되었습니다 (str[rv]의 후행'\0'바이트 제외).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)¶
- 상의 안정 ABI.
주어진
base(2와36사이의 값이거나 특수 값0이어야 함)에 따라str의 초기 부분을 unsigned long 값으로 변환합니다.선행 공백 및 문자 케이스가 무시됩니다. 만약
base가 0인 경우, 어떤 베이스인지 알려주기 위해 선행0b,0o또는0x를 찾습니다. 이러한 접두사가 없는 경우 기본값은10입니다.base는 0 또는 필수적으로 2와 36 사이여야 합니다. 만약ptr이NULL이 아니면 스캔의 끝을 가리키는 포인터를 포함합니다.변환된 값이 해당 반환 유형의 범위를 벗어나는 경우 범위 오류가 발생합니다 (
errno는ERANGE로 설정되며ULONG_MAX가 반환됩니다.). 변환을 수행할 수 없는 경우0이 반환됩니다.참고: Unix man 페이지 strtoul(3).
Added in version 3.2.
-
long PyOS_strtol(const char *str, char **ptr, int base)¶
- 상의 안정 ABI.
주어진
base(2와36사이의 값이거나 특수 값0이어야 함)에 따라str의 초기 부분을 long 값으로 변환합니다.PyOS_strtoul()과 같지만, 대신 long 값을 반환하고 오버플로우 시LONG_MAX를 반환합니다.참고: Unix man 페이지 strtol(3).
Added in version 3.2.
-
double PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception)¶
- 상의 안정 ABI.
문자열
s를 double로 변환하고, 실패 시 파이썬 예외를 발생시킵니다. 허용되는 문자열 집합은s가 선행이나 후행 공백을 가질 수 없다는 점을 제외하고는 파이썬의float()생성자가 허용하는 문자열 집합에 대응합니다. 변환은 현재 로케일과 독립적입니다.endptr이NULL이면, 전체 문자열을 변환합니다. 문자열이 부동 소수점 숫자의 유효한 표현이 아니면ValueError를 발생시키고-1.0을 반환합니다.endptr이
NULL이 아니면, 가능한 한 많은 문자열을 변환하고*endptr이 변환되지 않은 첫 번째 문자를 가리키도록 설정합니다. 문자열의 초기 세그먼트가 부동 소수점 숫자의 유효한 표현이 아니면,*endptr이 문자열의 시작을 가리키도록 설정하고, ValueError를 발생시키고-1.0을 반환합니다.s가 float에 저장하기에 너무 큰 값(예:"1e500"는 많은 플랫폼에서 그러한 문자열입니다)을 나타내는 경우,overflow_exception가NULL이면INFINITY(적절한 부호를 사용하여)를 반환하고 예외를 설정하지 않습니다. 그렇지 않은 경우,overflow_exception은 Python 예외 객체를 가리켜야 하며, 해당 예외를 발생시키고-1.0을 반환합니다. 두 경우 모두*endptr을 변환된 값 다음 첫 번째 문자를 가리키도록 설정합니다.변환 중 다른 에러가 발생하면 (예를 들어 메모리 부족 에러), 적절한 파이썬 예외를 설정하고
-1.0을 반환합니다.Added in version 3.1.
-
char *PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)¶
- 상의 안정 ABI.
제공된 format_code, precision 및 flags를 사용하여 double val을 문자열로 변환합니다.
format_code는
'e','E','f','F','g','G'또는'r'중 하나여야 합니다.'r'의 경우, 제공된 precision은 0이어야 하며 무시됩니다.'r'포맷 코드는 표준repr()형식을 지정합니다.flags 는 다음 값 중 0개 이상을 비트별 OR 연산하여 구성할 수 있습니다:
-
Py_DTSF_SIGN¶
반환된 문자열은 val 가 음수가 아닐 때도 항상 부호 문자로 선행해야 합니다.
-
Py_DTSF_ADD_DOT_0¶
반환된 문자열이 정수처럼 보이지 않도록 합니다.
-
Py_DTSF_ALT¶
“대체” 포매팅 규칙을 적용합니다. 자세한 내용은
PyOS_snprintf()'#'지정자의 설명을 참조하십시오.
-
Py_DTSF_NO_NEG_0¶
음의 0은 양의 0으로 변환됩니다.
Added in version 3.11.
만약 ptype 가
NULL이 아니면, 포인터가 가리키는 값은 val 의 타입에 따라 다음 상수들 중 하나로 설정됩니다:ptype
val 의 타입
-
Py_DTST_FINITE¶
유한 숫자
-
Py_DTST_INFINITE¶
무한 숫자
-
Py_DTST_NAN¶
숫자가 아님
반환 값은 변환된 문자열이 있는 buffer에 대한 포인터이거나, 변환에 실패하면
NULL입니다. 호출자는PyMem_Free()를 호출하여 반환된 문자열을 해제해야 합니다.Added in version 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)¶
- 상의 안정 ABI.
문자열의 대소 문자 구분 없는 비교. 이 함수들은 대소문자 ASCII 문자를 무시한다는 점을 제외하고는
strcmp`와 :c:func:()!strncmp`와 거의 동일하게 작동합니다.Return
0if the strings are equal, a negative value if str1 sorts lexicographically before str2, or a positive value if it sorts after.In the str1 or str2 arguments, a NUL byte marks the end of the string. For
PyOS_mystrnicmp(), the size argument gives the maximum size of the string, as if NUL was present at the index given by size.문자열의 대소 문자 구분 없는 비교.
-
int PyOS_stricmp(const char *str1, const char *str2)¶
-
int PyOS_strnicmp(const char *str1, const char *str2, Py_ssize_t size)¶
Case insensitive comparison of strings.
On Windows, these are aliases of
stricmp()andstrnicmp(), respectively.On other platforms, they are aliases of
PyOS_mystricmp()andPyOS_mystrnicmp(), respectively.
Character classification and conversion¶
The following macros provide locale-independent (unlike the C standard library
ctype.h) character classification and conversion.
The argument must be a signed or unsigned char.
-
Py_ISALNUM(c)¶
문자 c 가 알파벳 문자인지 여부를 확인합니다 (
a-z및A-Z).
-
Py_ISALPHA(c)¶
문자 c 가 십진수 문자(
0-9)인지 여부를 확인합니다.
-
Py_ISDIGIT(c)¶
문자 c 가 소문자 ASCII 문자(
a-z)인지 여부를 확인합니다.
-
Py_ISLOWER(c)¶
문자 c 가 대문자 ASCII 문자(
A-Z)인지 여부를 확인합니다.
-
Py_ISUPPER(c)¶
문자 c 가 공백 문자(공백, 탭, 캐리지 리턴, 줄 바꿈, 세로 탭 또는 폼 피드)인지 여부를 확인합니다.
-
Py_ISSPACE(c)¶
문자 c 가 16진수 문자(
0-9,a-f, 및A-F)인지 여부를 확인합니다.
-
Py_ISXDIGIT(c)¶
문자 c 의 소문자 등가물을 반환합니다.
-
Py_TOLOWER(c)¶
문자 c 의 대문자 등가물을 반환합니다.
-
Py_TOUPPER(c)¶
Return the uppercase equivalent of the character c.