如何获取被替换键值的行号?合并函数实现替换时返回行号
合并函数实现替换并获取行号
直接上修改后的合并函数,同时修正原代码里的逻辑问题(比如无法正确跟踪行号、全局变量滥用等):
old_new_dict = {'hi':'bye','old':'new'} def replace_and_track_line_numbers(file_path): modified_lines = [] replacement_records = [] # 存储格式:(行号, 原键, 替换后值) with open(file_path, 'r', encoding='utf-8') as f: for line_num, line in enumerate(f, start=1): modified_line = line # 检查当前行是否包含需要替换的键 for old_key, new_val in old_new_dict.items(): if old_key in modified_line: modified_line = modified_line.replace(old_key, new_val) replacement_records.append((line_num, old_key, new_val)) modified_lines.append(modified_line) # 将修改后的内容写回文件(不需要保存可注释此段) with open(file_path, 'w', encoding='utf-8') as f: f.writelines(modified_lines) return replacement_records # 使用示例 if __name__ == "__main__": records = replace_and_track_line_numbers("你的文件路径.txt") if records: print("替换记录:") for line_num, old, new in records: print(f"第{line_num}行:将'{old}'替换为'{new}'") else: print("未找到需要替换的内容")
关键说明
- 用
with语句处理文件,自动管理文件打开/关闭,避免资源泄漏 - 逐行遍历文件,
enumerate(start=1)直接从1开始计数行号,符合日常行号习惯 - 每一行单独处理替换,确保精准对应行号;若一行包含多个需替换的键,会分别记录每个键的替换信息
- 函数返回所有替换记录,方便后续查看或处理;写回文件的逻辑可选,按需保留
内容的提问来源于stack exchange,提问作者pkk
相关产品推荐
相关产品推荐

