首页 > 解决方案 > 使用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文件的选定区域中替换表达式?

谢谢你的帮助 :)

标签: pythonnotepad++

解决方案


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

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文件值的正确方法。


推荐阅读