정수를 선행 0 문자열로 포맷하는 가장 좋은 방법?
정의된 자릿수($cnt)의 문자열을 만들려면 선행 0을 정수에 추가해야 합니다.이 간단한 함수를 PHP에서 Python으로 변환하는 가장 좋은 방법은 무엇입니까?
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
이걸 할 수 있는 기능이 있나요?
를 사용할 수 있습니다.zfill()
스트링을 0으로 패딩하는 방법:
In [3]: str(1).zfill(2)
Out[3]: '01'
표준 방법은 형식 문자열 수식자를 사용하는 것입니다.이러한 형식 문자열 메서드는 대부분의 프로그래밍 언어(예를 들어 c의 sprintf 함수를 통해)에서 사용할 수 있으며 알기 쉬운 도구입니다.
길이 5 의 문자열을 출력하려면 , 다음의 순서에 따릅니다.
...파이썬 3.5 이상: f-string.
i = random.randint(0, 99999)
print(f'{i:05d}')
자세한 내용은 여기에서 f-string을 검색하십시오.
... Python 2.6 이상:
print '{0:05d}'.format(i)
...Python 2.6 이전 버전:
print "%05d" % i
참조: https://docs.python.org/3/library/string.html
Python 3.6 f-string을 사용하면 선행 0을 쉽게 추가할 수 있습니다.
number = 5
print(f' now we have leading zeros in {number:02d}')
대부분의 경우 정수 형식만 지정하면 됩니다.
'%0*d' % (fill, your_int)
예를들면,
>>> '%0*d' % (3, 4)
'004'
Python 2.6은 다음을 지원합니다.
add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count)
>>>add_nulls(2,3)
'002'
Python 3 이후의 경우: str.zfill()은 여전히 가장 읽기 쉬운 옵션입니다.
하지만 새롭고 강력한 str.format()을 알아보는 것이 좋습니다.만약 0이 아닌 것을 패딩하고 싶다면 어떻게 해야 할까요?
# if we want to pad 22 with zeros in front, to be 5 digits in length:
str_output = '{:0>5}'.format(22)
print(str_output)
# >>> 00022
# {:0>5} meaning: ":0" means: pad with 0, ">" means move 22 to right most, "5" means the total length is 5
# another example for comparision
str_output = '{:#<4}'.format(11)
print(str_output)
# >>> 11##
# to put it in a less hard-coded format:
int_inputArg = 22
int_desiredLength = 5
str_output = '{str_0:0>{str_1}}'.format(str_0=int_inputArg, str_1=int_desiredLength)
print(str_output)
# >>> 00022
최소 두 가지 옵션이 있습니다.
- str.zfill:
lambda n, cnt=2: str(n).zfill(cnt)
%
포맷:lambda n, cnt=2: "%0*d" % (cnt, n)
Python > 2.5 의 경우는, clorz 의 응답의 제3 옵션을 참조해 주세요.
빌트인 대신 원라이너로 제공zfill
.
이 함수는x
는 그것을 문자열로 변환하고, 선두에 0을 추가합니다.또, 길이가 너무 짧은 경우에만, 다음과 같이 입력합니다.
def zfill_alternative(x,len=4): return ( (('0'*len)+str(x))[-l:] if len(str(x))<len else str(x) )
요약하면 빌트인:zfill
좋습니다만, 이것을 어떻게 수작업으로 실장하는지가 궁금하신 분은, 예를 하나 더 들겠습니다.
간단한 변환은 (함수를 사용하여) 다음과 같습니다.
def add_nulls2(int, cnt):
nulls = str(int)
for i in range(cnt - len(str(int))):
nulls = '0' + nulls
return nulls
이것은 나의 Python 함수입니다.
def add_nulls(num, cnt=2):
cnt = cnt - len(str(num))
nulls = '0' * cnt
return '%s%s' % (nulls, num)
언급URL : https://stackoverflow.com/questions/733454/best-way-to-format-integer-as-string-with-leading-zeros
'sourcecode' 카테고리의 다른 글
Javascript는 PHP 폭발()에 상당합니다. (0) | 2022.09.25 |
---|---|
PHP를 사용하여 JSON용 어레이를 만드는 방법 (0) | 2022.09.24 |
Android - 사용자 정의(복합) 구성 요소 작성 (0) | 2022.09.24 |
.htaccess에서 cors를 유효하게 하다 (0) | 2022.09.24 |
Class.getName() 클래스 이름만 가져옵니다. (0) | 2022.09.24 |