You need to enable JavaScript to run this app. Python将Excel数据写入TXT遇重复,如何删除每行指定字符串
优惠活动
大模型
产品
解决方案
定价
更多

Python将Excel数据写入TXT遇重复,如何删除每行指定字符串

现有实现的核心问题
  • 变量类型与定义错误:初始化阶段把i、j设为空列表,后续逻辑又想存单元格位置字符串,类型不匹配;空值分支写的j = I,大写I属于未定义变量,运行时会直接触发NameError报错,流程完全跑不通。
  • 写入逻辑缺换行:每列值写入后只拼接制表符,全程没有在一行遍历完成后写入换行符,所有内容会连在同一长行里,很容易被误判为数据重复。
  • 判重逻辑失效:空值、有值两个分支都把flag设为True,i和j的赋值规则完全不对等,根本起不到对比单元格位置、过滤重复内容的作用。
  • 文件模式问题:用a+追加模式打开文件,多次运行脚本会把新内容拼在旧内容后面,新旧数据混杂也会表现为“数据重复”。
修正后的可运行去重写入逻辑

逻辑说明:每遍历一行先收集所有非空单元格的值,和上一次实际写入的行内容做比对,完全一致就跳过写入,不一致就按制表符分隔、带换行写入文件,从源头避免重复:

import openpyxl

# 替换为你实际的Excel读取逻辑
theFile = openpyxl.load_workbook("你的Excel文件路径.xlsx")
allSheetNames = theFile.sheetnames

# 用w模式覆盖写入,避免多次运行追加造成的假重复
with open("test1.txt", "w", encoding="utf-8") as f:
    last_written_row = None
    for sheet in allSheetNames:
        currentSheet = theFile[sheet]
        # 从第2行开始遍历,跳过表头
        for row in range(2, currentSheet.max_row + 1):
            current_row_values = []
            # 遍历A到F列
            for column in "ABCDEF":
                cell = currentSheet[f"{column}{row}"]
                if cell.value is not None:
                    current_row_values.append(str(cell.value))
            # 空行直接跳过
            if not current_row_values:
                continue
            current_row_str = "\t".join(current_row_values)
            # 和上一次写入内容一致就跳过,避免重复
            if current_row_str != last_written_row:
                f.write(current_row_str + "\n")
                last_written_row = current_row_str
逐行删除文件内特定字符串的实现

Python没有内置专门做这类操作的单行函数,但可以通过标准库实现极简逻辑,不需要安装第三方依赖:
示例需求为删除文本文件每行内的目标字符串,实现代码:

# 逐行读取内容、替换目标字符串、覆写回原文件
with open("test1.txt", "r", encoding="utf-8") as f:
    all_lines = f.readlines()
processed_lines = [line.replace("要删除的特定字符串", "") for line in all_lines]
with open("test1.txt", "w", encoding="utf-8") as f:
    f.writelines(processed_lines)

如果是GB级别的超大文本文件,可以改成流式逐行读写,减少内存占用。


内容的提问来源于stack exchange,提问作者Rao Sunny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 02:15:06