O bloco de notas ++ renumerando

3

Existe uma maneira (expressão regular ou outra opção) de renumerar automaticamente o ID de volta para 1, 2 e assim por diante, como no exemplo abaixo?

<comment id="53" status="new">
<comment id="54" status="new">
<comment id="55" status="new">

Para isso:

<comment id="1" status="new">
<comment id="2" status="new">
<comment id="3" status="new">

Eu estava tentando usar o script Python no link abaixo. Eu adaptei o código acima e parece que:

def calculate(match):
    return 'comment id="%s"' % (match.group(1), str(int(match.group(2))-52))

editor.rereplace('comment id="([0-9]+)"', calculate)

Não faz nada. Por quê? O que estou fazendo errado?

    
por Slawomir_ 21.02.2017 / 12:39

1 resposta

1

O abaixo é o script do Python 3.6. O nome do arquivo precisaria ser alterado e, se a estrutura do arquivo fosse alterada no futuro, a expressão regular também exigiria alguns ajustes, mas, por enquanto, ele deve ser executado sem problemas, independentemente do número de linhas no arquivo.

import re
file = open('my_file_1.txt', 'r+')
i=1
new_file_content=""
for line in file:
    p = re.compile('(\d+)')
    new_file_content += p.sub(str(i), line)
    i+=1
file.seek(0)
file.truncate()
file.write(new_file_content)
file.close()


# REFERENCES
# [1] https://docs.python.org/3/tutorial/inputoutput.html
# [2] https://docs.python.org/3/howto/regex.html
    
por 21.03.2017 / 23:19