python - 在一次迭代Python中修改文件中的多个位置
问题描述
我正在尝试修改一个文件,其中我希望用添加的参数替换一些括号。但是,使用re.search
在第一次成功时停止,甚至re.findall
没有帮助。
def Modify_Brackets(file_name):
input=open(file_name,"r")
output = open("help.txt", "w+")
for line in input:
text = input.read()
matches = re.findall(r'(rule).*([0-9]+).*:.*(\[.*\])(\s*)\-\-(\s*)(\[.*\])(\s*)\-\>(\s*)(\[.*])', text)
for m in matches:
Brackets= m[5][1:-1]
ModifiedBrackets = re.sub(r'\)',',changed)',Brackets)
newline = text.replace(m[5], ModifiedBrackets)
output.write(newline)
else:
output.write(text + "")
输入 :
<some text>
rule abc1 : [some text]
--[ f(a,b), g(x,y) ]->
[some text]
<some text>
<some text>
rule abc2 : [some text]
--[ f(x,b), g(a,y) ]->
[some text]
目前的输出:
<some text>
rule abc1 : [some text]
--[ f(a,b,changed), g(x,y,changed) ]->
[some text]
<some text>
<some text>
rule abc2 : [some text]
--[ f(x,b), g(a,y) ]->
[some text]
预期输出:
<some text>
rule abc1 : [some text]
--[ f(a,b,changed), g(x,y,changed) ]->
[some text]
<some text>
<some text>
rule abc2 : [some text]
--[ f(x,b,changed), g(a,y,changed) ]->
[some text]
如您所见,它仅适用于第一条规则,然后停止。我希望对文件中存在的所有规则进行这种更改。
解决方案
推荐阅读
- python-3.x - 如何将凭据添加到 Google 文本到语音 API?
- php - 子文件夹和作曲家中的 Laravel 模块
- c# - 什么是任务生命周期?它什么时候结束或在 C# 中收集?
- javascript - Ajax 响应很好,但方法错误
- javascript - 带有 Glyphicon 的按钮小于带有文本的按钮
- php - Mysql 表连接消耗太多时间
- java - Java Web Server - 并行工作者设计 VS 装配线设计,用于逐步 IO 操作
- python - Python:如何使用 pandas 数据框更新(覆盖)Google BigQuery 表
- polymer - 在聚合物 3 中使用 Google Web Components 元素
- jquery - 如果 #hash 在 url 中,则将 Class 添加到 body