2017-02-08 5 views
1

Я хотел бы отформатировать мои целые числа в виде строк, чтобы без знака они были заполнены нулями, чтобы иметь как минимум две цифры.Форматирование строки на Python: отложенные отрицательные числа

Например, я хочу

1 
-1 
10 
-10 

быть

01 
-01 
10 
-10 

В частности, я хочу различные минимальные длины строки для отрицательных чисел (3) и неотрицательные числа (2). Простое заполнение номера, как указано here, недостаточно. Это возможно?

+1

См http://pyformat.info, в частности [чисел заполнения] (https://pyformat.info/#number_padding) –

+0

@PeterWood Я прочитал что веб-страница снова и снова, ничто в этом не касается моей проблемы, а это то, что мне нужны разные строки минимальной длины для положительных и отрицательных чисел соответственно. – carmander

+1

положите то, что вы пробовали в вопросе, и объясните, почему он неадекватен. –

ответ

3

вы можете использовать str.format, но с добавлением 1 к размеру принимать отрицательное число в расчет здесь:

l = [1,-1,10,-10,4] 

new_l = ["{1:0{0}d}".format(2 if x>=0 else 3,x) for x in l] 

print(new_l) 

результат:

['01', '-01', '10', '-10', '04'] 

это работает, потому что format принимает вложенные выражения: вы можете передайте размер ({:02d} или {:03d}) в качестве элемента форматирования, если сэкономить хлопоты форматирования строки формата в первый проход.

0

Использование "{:03d}".format(n). 0 означает начальные нули, 3 - ширина поля. Может быть не точно то, что вы хотите:

>>> for n in (-123,-12,-1,0,1,12,123, 1234): 
... print('{:03d}'.format(n)) 
... 
-123 
-12 
-01 
000 
001 
012 
123 
1234