notepad ++ python替换为增量编号

时间:2017-11-24 23:36:56

标签: python notepad++

我希望这是一个简单的问题。我对notepad ++和regex非常熟悉,但对于notepad ++的python插件我是新手。我知道插件可以用数字替换值,然后增加替换它的数量。

我想要更改的代码如下所示:

    Hello, blah blah blah <a href="#filepos14613280" >@*</a> blah blah blah
    More stuff <a href="#filepos14634533" >@*</a> blah blah blah
    Even more stuff <a href="#filepos14614629" >@*</a> blah blah blah

我想将其改为:

    Hello, blah blah blah <a href="#filepos14613280" >1</a> blah blah blah
    More stuff <a href="#filepos14634533" >2</a> blah blah blah
    Even more stuff <a href="#filepos14614629" >3</a> blah blah blah

任何有关.py文件/脚本应该是什么样子的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

这个程序的一个简单示例,您可能要编写以更改行的一个位置如下:

lines = open('filename.whatever').readlines()
NewLines = []
increments = 1

for line in lines:
    NewLines.append(line.replace('@*', str(increments)))
    increments += 1

with open('filename_modified.whatever', 'w') as new:
    new.write('\n'.join(NewLines))

但是,当然,用文件名替换'filename.whatever'。 希望这个有效! (这不是与记事本++相关的,但我认为这是你最好的选择。)

答案 1 :(得分:0)

我希望以下两个功能可以帮助您:)

第一个功能

    # replace multiple occurrences of a string by an incremental number
    # e.g.      <rn>, <rn>, <rn> ...
    #                becomes
    #           <rn1>, <rn2>, <rn3> ...
    #
    # **m.group(1)** same like regex argument **\1**
    # **global counter** means: use (global) variable **counter** outside def in def
    # more about global and local variables: https://www.python-course.eu/global_vs_local_variables.php


    import re

    counter = 0

    def get_counter(m):
        global counter
        counter = counter + 1
        return m.group(1) + str(counter) + '>'

    editor.rereplace('(<rn)>', get_counter, re.IGNORECASE)

第二项功能

    # replace X followed by numbers by an incremental number
    # e.g.   X56 X39 X999
    #          becomes
    #        Y57 Y40 Y1000

    def add_1(m):
        return 'Y' + str(int(m.group(1)) + 1)

    editor.rereplace('X([0-9]+)', add_1)