Сначала я думал, что вы можете использовать регулярные выражения, но поскольку я читал документы MYSQL , похоже, вы не можете. Если бы я был вами, я бы использовал другой язык (например, PHP) для создания списка столбцов, который вы хотите получить, сохраните его как строку, а затем используйте для генерации SQL.
Строки:
>>> n = '4'
>>> print(n.zfill(3))
004
И для чисел:
>>> n = 4
>>> print('%03d' % n)
004
>>> print(format(n, '03')) # python >= 2.6
004
>>> print('{0:03d}'.format(n)) # python >= 2.6
004
>>> print('{foo:03d}'.format(foo=n)) # python >= 2.6
004
>>> print('{:03d}'.format(n)) # python >= 2.7 + python3
004
>>> print('{0:03d}'.format(n)) # python 3
004
>>> print(f'{n:03}') # python >= 3.6
004
Просто используйте крик метод строкового объекта.
Этот пример будет делать строку 10 символов в длину, дополняя по мере необходимости.
>>> t = 'test'
>>> t.rjust(10, '0')
>>> '000000test'
Кроме того zfill
, можно использовать общее строковое форматирование:
print(f'{number:05d}') # (since Python 3.6), or
print('{:05d}'.format(number)) # or
print('{0:05d}'.format(number)) # or (explicit 0th positional arg. selection)
print('{n:05d}'.format(n=number)) # or (explicit `n` keyword arg. selection)
print(format(number, '05d'))
Документация для строка, форматирующая и струны фа .
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005
См. документацию печати для всех захватывающих деталей!
Обновление для Python 3.x (7.5 лет спустя)
, Что последняя строка должна теперь быть:
print("%0*d" % (width, x))
Т.е. print()
теперь функция, не оператор. Обратите внимание, что я все еще предпочитаю Старый стиль Школы printf()
, потому что, IMNSHO, он читает лучше, и потому что, гм, я использовал ту нотацию с января 1980. Что-то... старые собаки.. что-то что-то... новые приемы.
При использовании >= Python 3.6
самый чистый путь состоит в том, чтобы использовать струны фа с строка, форматирующая :
>>> s = f"{1:08}" # inline
>>> s
'00000001'
>>> n = 1
>>> s = f"{n:08}" # int variable
>>> s
'00000001'
>>> c = "1"
>>> s = f"{c:0>8}" # str variable
>>> s
'00000001'