sourcecode

정수를 선행 0 문자열로 포맷하는 가장 좋은 방법?

copyscript 2022. 9. 24. 10:13
반응형

정수를 선행 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

반응형