python - 使用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文件的选定区域中替换表达式?
谢谢你的帮助 :)
解决方案
我还没有完全理解这个问题,但你可以使用这段代码。
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文件值的正确方法。
推荐阅读
- dask - Dask 多个客户
- mongodb - 连接到 docker mongo db 镜像
- javascript - javaScript中if语句中的变量
- python - tf.keras.losses.SparseCategoricalCrossentropy() 与“sparse_categorical_crossentropy”作为损失的区别
- ansible - Ansible 库存:aws_ec2 模块——寻找工作“组:”函数的示例
- laravel - 获取仅包含作者姓名的所有帖子
- linux - Amazon EC2 免费层服务器是否适合我的小型 Web 应用程序?
- python - 如何在 django 中定义一个函数以便在后台保持活动状态?
- python - Pandas,将多个 CSV 合并为一个并清理字符串
- swift - 使用 \n 而不是换行符保存 UITextView 字符串(Swift)