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

如何批量删除多个TXT文件指定行并重新更新行标签?

批量处理.dat文件:删除指定行并递补标签

我需要处理多个.dat格式的文本文件,文件格式示例如下:

idxs Flujos n_pix
a 0.14610920325775417 25
b 7.749977963857448 88
c 0.4770103911455863 31
d 0.04608552769154015 19
e 0.10887099144089642 23
f 411.3453337879555 535
g 0.19422567525896847 29
h 0.012012563331850717 9
i 0.0 23
j 0.08226740119487924 14

需求是:批量删除所有文件中Flujos列值为0.0的行,删除后后续行的标签要依次递补(比如原j行要改为i行)。我自己写了部分Python代码,但几周都没解决问题,求帮忙。我的代码如下:

labels = ['a','b','c',"d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","w","x","y","z"] # 标签列表

fl = open(f+"/Tabla_"+Names[i]+"_"+f+".dat", "w")
fl.write("idxs " "Flujos " "n_pix \n")

for M in range(len(idxs)):
    fl.write(" {} {} {}\n".format(labels[M], Flux_Lines[M], PX[M]))

fl.close()

txts=sorted(glob.glob(f+"/Tabla_*.dat"))

for TXT in txts:
    df = pd.read_csv(TXT, sep=" ", header = None, skiprows = 1)
    f_c2 = float(df[df.columns[2]])
    d_txt = f_c2 > 0
    print(d_txt)

解决方案

可以用pandas结合文件读写实现需求,步骤清晰直接:

  1. 遍历所有目标.dat文件;
  2. 正确读取文件内容并过滤掉Flujos为0.0的行;
  3. 重新生成递补后的标签,覆盖原文件(或写入新文件)。

完整代码示例:

import glob
import pandas as pd

# 定义完整的标签序列
labels = ['a','b','c',"d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","w","x","y","z"]

# 获取所有目标.dat文件路径,根据实际路径调整前缀
txts = sorted(glob.glob("Tabla_*.dat"))

for file_path in txts:
    # 用正则匹配多空格分隔,避免原文件空格不一致导致读取错误
    df = pd.read_csv(file_path, sep=r'\s+', header=0)
    
    # 过滤Flujos为0.0的行,重置索引保证后续标签顺序正确
    filtered_df = df[df['Flujos'] != 0.0].reset_index(drop=True)
    
    # 为过滤后的行重新分配递补标签
    filtered_df['idxs'] = labels[:len(filtered_df)]
    
    # 写入原文件(如需保留原文件,可改为写入带后缀的新文件,比如file_path.replace('.dat', '_processed.dat'))
    filtered_df.to_csv(file_path, sep=' ', index=False)

关键说明:

  • 使用sep=r'\s+'处理原文件中可能的多空格分隔问题,避免列读取错位;
  • reset_index(drop=True)重置索引,确保标签递补时的顺序对应正确;
  • 直接覆盖原文件前建议备份数据,或者修改写入路径生成新文件更安全;
  • 标签列表labels需保证长度足够覆盖过滤后的最大行数。

内容的提问来源于stack exchange,提问作者Hache 99

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:49:58