Pad um grupo de captura regex?

0

Existe alguma maneira de preencher números de dígitos únicos com um 0 com regex?
Estou usando o Python.

Exemplos:

  • 6 = > 06
  • 1 = > 01

etc.

Veja em que estou trabalhando: link

Gostaria que todos os nomes de arquivos tivessem um formato uniforme.

    
por leetwanker 01.11.2015 / 17:14

1 resposta

1

Sucesso ao ler documentos

Isso usa apenas a função de substituição de expressão regular e a função zfill string para preencher uma função de retorno de chamada.

import re

a = """Hello 1 of 60
Hello.22.of.60.
Hello 33of60
Hello.44of60.
Hello 1 of 6
Hello.2.of.6.
Hello 3of6
Hello.04of6.""".splitlines()

def F(m):return r' S01E%s'%m.group(1).zfill(2)
print '\n'.join([re.sub(r'\D(\d+).*', F, x, 1)for x in a])

Saída:

Hello S01E01
Hello S01E22
Hello S01E33
Hello S01E44
Hello S01E01
Hello S01E02
Hello S01E03
Hello S01E04

Ou se você quiser manter o segundo número, uma pequena diferença:

print '\n'.join([re.sub(r'\D(\d+).*?(\d+).*', lambda m:r' S01E%s of %s'%(m.group(1).zfill(2),m.group(2).zfill(2)), x)for x in a])

Saída:

Hello S01E01 of 60
Hello S01E22 of 60
Hello S01E33 of 60
Hello S01E44 of 60
Hello S01E01 of 06
Hello S01E02 of 06
Hello S01E03 of 06
Hello S01E04 of 06
    
por 06.11.2015 / 05:30

Tags