如何替换文本文件中指定数字对应的冒号后关联名称
解决方案
首先确认你已经提前定义好要匹配的target_number(目标数字)和要替换的new_name(新名称),以下代码可直接运行:
import re # 配置参数,按需修改 target_number = "000000000000000" new_name = "自定义新名称" file_path = "file.txt" # 读取文件全量内容 with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 编译正则规则,精准匹配目标数字对应的组合 # 规则说明:匹配格式为 @@目标数字:任意非@字符@@ 的片段,避免误匹配包含目标数字的其他编号 pattern = re.compile(r'@@(%s):([^@]+)@@' % re.escape(target_number)) # 检查目标数字是否存在 if not pattern.search(content): print(f"文件中不存在编号{target_number},未执行替换") else: # 替换对应名称 new_content = pattern.sub(rf'@@\1:{new_name}@@', content) # 写回文件 with open(file_path, 'w', encoding='utf-8') as f: f.write(new_content) print("替换完成")
原代码问题说明
- 你写的判断条件
if number in line and number not in line逻辑矛盾,永远不会触发 - 直接使用
r+模式边遍历行边写入会因为文件读写指针共享导致内容错乱,小文件优先选择全量读取处理后再写回的方案 - 直接判断
number in line会出现误匹配,比如目标数字是123,会错误命中编号为1234的组合,用正则加边界匹配可以避免该问题
内容的提问来源于stack exchange,提问作者pros be playin
相关产品推荐
相关产品推荐

