Подано:
a = 1
b = 10
c = 100
Як відобразити провідний нуль для всіх чисел із меншими двома цифрами?
Я очікую цього результату:
01
10
100
Подано:
a = 1
b = 10
c = 100
Як відобразити провідний нуль для всіх чисел із меншими двома цифрами?
Я очікую цього результату:
01
10
100
Відповіді:
У Python 2 (і Python 3) ви можете:
print "%02d" % (1,)
В основному % схоже на ( printf
або sprintf
див. Документи ).
Для Python 3. + така ж поведінка може бути досягнута і з format
:
print("{:02d}".format(1))
Для Python 3.6+ та ж поведінка може бути досягнута з f-рядками :
print(f"{1:02d}")
x = "%02d.txt" % i
підвищує TypeError (не може об'єднати об'єкти 'str' та 'int'), але x = "%02d.txt" % (i,)
це не робить. Цікаво. Цікаво, де це задокументовано
%
форматів рядків.
Ви можете використовувати str.zfill
:
print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))
відбитки:
01
10
100
"{1:02d}"
не може бути змінних замість 2
(наприклад, якщо ви створюєте динамічну функцію).
У Python 2.6+ та 3.0+ ви використовуєте format()
рядовий метод:
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))
або за допомогою вбудованого (для одного номера):
print(format(i, '02d'))
Дивіться документацію PEP-3101 щодо нових функцій форматування.
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
відбитки:
01
10
100
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
У Python> = 3.6 ви можете це зробити коротко за допомогою нових f-рядків, які були введені за допомогою:
f'{val:02}'
який друкує змінну з ім'ям val
з fill
величиною 0
і а width
з2
.
Для вашого конкретного прикладу ви можете це зробити красиво в циклі:
a, b, c = 1, 10, 100
for val in [a, b, c]:
print(f'{val:02}')
який друкує:
01
10
100
Для отримання додаткової інформації про f-рядки, подивіться на PEP 498, де вони були представлені.
x = [1, 10, 100]
for i in x:
print '%02d' % i
призводить до:
01
10
100
Докладніше про формат рядків читайте за допомогою% у документації.
Або інше рішення.
"{:0>2}".format(number)
"{0:0>2}".format(number)
якщо хтось захоче nLeadingZeros, він повинен зазначити, що вони також можуть це зробити:"{0:0>{1}}".format(number, nLeadingZeros + 1)
Використовуйте рядок формату - http://docs.python.org/lib/typesseq-strings.html
Наприклад:
python -c 'print "%(num)02d" % {"num":5}'
Ось як я це роблю:
str(1).zfill(len(str(total)))
В основному zfill приймає кількість провідних нулів, які ви хочете додати, тому легко взяти найбільше число, перетворити його в рядок і отримати довжину, як це:
Python 3.6.5 (за замовчуванням, 11 травня 2018, 04:00:52) [GCC 8.1.0] на Linux Введіть "довідка", "авторське право", "кредити" або "ліцензія" для отримання додаткової інформації. >>> всього = 100 >>> друк (str (1) .zfill (len (str (всього)))) 001 >>> всього = 1000 >>> друк (str (1) .zfill (len (str (всього)))) 0001 >>> всього = 10000 >>> друк (str (1) .zfill (len (str (всього)))) 00001 >>>
Це можна зробити за допомогою f рядків .
import numpy as np
print(f'{np.random.choice([1, 124, 13566]):0>8}')
Це надрукує постійну довжину 8, а решту прокладіть провідними 0
.
00000001
00000124
00013566
df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x))
5 - кількість загальних цифр.
Я використовував це посилання: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/