You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理文本文件时如何将连续两行相同分隔符替换为单行

修复文本材料删除后的连续分隔线异常

你当前的删除脚本仅过滤了包含待删除材料名的行,没有处理条目配套的短横线分隔线,删除条目后原本夹在被删条目和上下条目之间的两条分隔线会相邻,出现重复分隔线的格式问题。直接在写入临时文件的流程里加一层连续分隔线判断即可修复,不需要多次读写文件。

原代码存在的问题

原代码如下,除了分隔线问题,还缺少os模块的导入,直接运行会抛异常:

def deletematerial():
    print('Deleting of material ')
    fh_r = open("AQUESTO.txt", "r")
    name = input('Enter the name of de material to eliminate: ').lower()
    print("\n")
    with open("bb.txt", "w") as output:
        for line in fh_r:
            if name not in line.strip("\n"):
                output.write(line)
    fh_r.close()
    os.remove("AQUESTO.txt")
    os.replace('bb.txt', 'AQUESTO.txt')

修复后完整代码

修复逻辑:

  • 补上缺失的os模块导入,用with上下文管理器同时管理读写文件,避免手动关文件的疏漏
  • 过滤待删除材料行的同时,追踪上一次写入文件的行
  • 如果当前行和上一次写入的行都是由纯短横线组成的条目分隔线,就跳过当前行不写入,从根源避免连续分隔线
  • 标题下方的等号分隔线、正常的材料行、单条分隔线都不会被改动
import os

def deletematerial():
    print('Deleting of material ')
    target_material = input('Enter the name of the material to eliminate: ').lower()
    print("\n")

    last_line = ""
    with open("AQUESTO.txt", "r", encoding="utf-8") as f_in, open("bb.txt", "w", encoding="utf-8") as f_out:
        for line in f_in:
            # 跳过匹配到待删除材料名的行
            stripped_line = line.strip()
            if target_material in stripped_line:
                continue
            # 检测连续短横线分隔线,重复的直接跳过
            if stripped_line and set(stripped_line) == {'-'} and last_line.strip() and set(last_line.strip()) == {'-'}:
                continue
            f_out.write(line)
            last_line = line

    # 直接用临时文件替换原文件,不需要先手动删除原文件
    os.replace("bb.txt", "AQUESTO.txt")

修复效果

以给出的示例文件为例,删除granade条目后,文件格式完全正常,不会出现连续分隔线:

name     |  priority
====================
gun      |  low
--------------------
explosive|  high
--------------------

如果删除的是第一条或者最后一条材料,也不会出现首尾多余分隔线的问题。


内容的提问来源于stack exchange,提问作者María Verónica Arismendi Pérez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:15:32