使用python脚本在notepad ++中进行多个单词搜索和替换

时间:2019-01-01 19:43:57

标签: python notepad++

我通常使用python脚本一次替换txt文件中的多个表达式。

我创建了一个引用文件,其中要替换的表达式之间用空格隔开:

value1 valueA
value2 valueB
value3 valueC

然后我使用python脚本:

with open('path to my referencefile.txt') as f:
    for l in f:
        s = l.split()
        editor.replace(s[0], s[1])

它通常可以正常工作,但是当我尝试替换已经存在并且想要基本重新排序的表达式时,我遇到了一个问题。

示例:

value1 value2
value2 value3
value3 value4

最后,将value1替换为value2,然后将value2替换为value3。最后,将value3替换为value4。这意味着value1变成了value4而不是value2 ...我如何保持value1被value2代替而不是这种替换级联? (当然,value2替换为value3,value3替换为value4)

在notepad ++中,可以使用正则表达式替换函数,将公式(value1)|(value2)|(value3)替换为(?1value2)(?2value3)(?3value4)。是否可以通过上述python脚本实现相同的结果?

此外,如何修改python脚本以仅在txt文件的选定区域中替换表达式?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

我还没有完全理解这个问题,但是您可以使用此代码。

with open("val.txt", "r+") as f:
file = f.readlines()
f.seek(0)
for line in file:
    s = line.split()
    s.reverse()
    f.writelines(s[0] + ' ' + s[1] + '\n')

这只是更改了两列。但是,我认为这是处理txt文件值的正确方法。

答案 1 :(得分:0)

如果要替换另一个文本文件中的这两列,则可以使用以下代码。

with open('path to my referencefile.txt') as f:
    another_file = open("another file name","w")
    for l in f:
        s = l.split()
        another_file.write(s[0] + " " + s[0][:-1] + str(int(s[0][-1])+1) + "\n" )
    another_file.close()

如您所见,这里我们将输入文本的第一行中的'A'替换(不是完全替换,而是应对)为'2'文件等,同时记录到另一个文件。

如果上述代码解决了问题,那还不行,否则请告诉我您的疑问。