Данный:
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 >>> print (str (1) .zfill (len (str (всего)))) 001 >>> всего = 1000 >>> print (str (1) .zfill (len (str (всего)))) 0001 >>> итого = 10000 >>> print (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/