Notepad ++重新编号


2

有没有办法(正则表达式或其他选项)自动将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_ 2017年


我试图按照你提供的线程的说明使用python插件。它什么都不做。我不知道为什么。它只会在第一次运行时打开弹出窗口,其中包含两个单词“Unknown exception”。
Slawomir_ 2017年

Answers:


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

最后我在Win 7上安装了Python 3.6.1并运行此脚本。结果如预期。非常感谢!
Slawomir_
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.