我通常使用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文件的选定区域中替换表达式?
感谢您的帮助:)
答案 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'文件等,同时记录到另一个文件。
如果上述代码解决了问题,那还不行,否则请告诉我您的疑问。