Ruby转Python模板文件编辑求助:行跳过/克隆/替换逻辑迁移
完善Python代码实现Ruby模板编辑逻辑
核心目标是复刻Ruby代码的模板处理逻辑:通过skip控制行跳过、get控制模板行收集,最终将收集的模板行结合测试ID替换占位符,生成目标输出文件。
完整Python代码
write = [] line2 = [] get = 0 skip = 0 test_id = ["A0001", "B0002", "C7030"] with open("template.txt", "r") as f: for line in f: line = line.strip() # 跳过注释行 if line.startswith("#"): continue # 遇到$$$111$$$时关闭跳过模式 if "$$$111$$$" in line: skip = 0 continue # 遇到$$$444$$$时开启跳过模式 if "$$$444$$$" in line: skip = 1 continue # 跳过模式下直接跳过当前行 if skip == 1: continue # 遇到$$$222$$$时清空收集列表,开启模板行收集模式 if "$$$222$$$" in line: line2.clear() get = 1 continue # 遇到$$$333$$$时关闭收集模式,批量生成替换后的内容 if "$$$333$$$" in line: get = 0 for cur in test_id: for row in line2: # 替换占位符:$$$000$$$换成FORM,$$$001$$$换成当前测试ID replaced_line = row.replace("$$$000$$$", "FORM").replace("$$$001$$$", cur) write.append(replaced_line) continue # 收集模式下将行加入模板列表 if get == 1: line2.append(line) continue # 兼容其他未匹配的行(示例中无此场景) write.append(line) # 将结果写入输出文件 with open("template_output.txt", "w") as o: for item in write: o.write(f"{item}\n")
关键修正与补充说明
- 补全核心变量:添加了Ruby中定义的
test_id列表,确保测试ID的遍历替换逻辑完整 - 修正
skip模式逻辑:原Python代码错误将$$$111$$$的处理设为skip=1,现已修正为skip=0,与Ruby逻辑对齐 - 添加
$$$444$$$处理:实现开启跳过模式的逻辑,跳过后续行直到被$$$111$$$重置 - 实现模板替换核心逻辑:在
$$$333$$$触发时,遍历每个测试ID,对收集到的模板行执行占位符替换,将结果存入输出列表 - 对齐
get模式切换:确保仅收集$$$222$$$到$$$333$$$之间的行,与Ruby的行收集逻辑一致
验证结果
运行代码后,生成的template_output.txt内容与目标输出完全一致:
Application FORM User_id A0001 Application FORM User_id B0002 Application FORM User_id C7030
内容的提问来源于stack exchange,提问作者Samael2021
相关产品推荐
相关产品推荐

