Notepad ++ перенумерування


3

Чи є спосіб (регулярний вираз або інший варіант) автоматично перенумерувати ID назад на 1, 2 і так далі, як у прикладі нижче?

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

До цього:

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

Я намагався використовувати скрипт Python з посиланням у коментарі нижче. Я підібрав його для наведеного вище коду.

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

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

Він нічого не робить. Чому? Що я роблю неправильно?


змінити номер на що? віднімаючи 52? або потрібно починати з 1 у кожному списку? Який ваш діапазон чисел? ...
Máté Juhász

Мені потрібно починати з 1 у кожному списку. 53 є лише прикладом. Це може бути будь-яке невід'ємне число.
Slawomir_

1
Це може бути корисним: stackoverflow.com/questions/20506990/…
StefanR

Я намагався використовувати додаток python, дотримуючись інструкцій з наведеного вами потоку. Вона взагалі нічого не робить. Я не знаю чому. Він відкриває лише спливаюче вікно з двома словами "Невідоме виключення" для першого запуску.
Slawomir_

Відповіді:


1

Нижче наведено сценарій Python 3.6. Ім'я файлу потрібно буде змінити, і якщо структура файлу змінюватиметься в майбутньому, регулярний вираз може також вимагати деяких налаштувань, але на даний момент він повинен працювати безперервно, незалежно від кількості рядків у файлі.

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

Нарешті, я встановив Python 3.6.1 на Win 7 і запустив цей сценарій. Результати, як і очікувалося. Дуже дякую!
Slawomir_
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.