Это та же самая грамматика, но проще: A -> a | ';' | ';' A
Это все еще не LL (1). Но, удаляя левый фактор, теперь это LL (1): A -> a B B -> ε | ';' C C -> ε | A
Вы можете использовать метод zfill ()
для дополнения строки нулями:
In [3]: str(1).zfill(2)
Out[3]: '01'
Python 2.6 позволяет это:
add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count)
>>>add_nulls(2,3)
'002'
Это моя функция Python:
def add_nulls(num, cnt=2):
cnt = cnt - len(str(num))
nulls = '0' * cnt
return '%s%s' % (nulls, num)
You have at least two options:
lambda n, cnt=2: str(n).zfill(cnt)
%
formatting: lambda n, cnt=2: "%0*d" % (cnt, n)
If on Python >2.5, see a third option in clorz's answer.
Простое преобразование будет (опять же с функцией):
def add_nulls2(int, cnt):
nulls = str(int)
for i in range(cnt - len(str(int))):
nulls = '0' + nulls
return nulls
Скорее всего, вам просто нужно отформатировать целое число:
'%0*d' % (fill, your_int)
Например,
>>> '%0*d' % (3, 4)
'004'