如何批量删除多个TSV文件无关列并将分隔符替换为空格
修改方案
直接调整现有代码即可,两步操作就能实现你的需求:
- 读取TSV生成DataFrame后,新增删除前两列的逻辑,pandas列索引从0开始计数,用
iloc方法筛选保留第2列及之后的内容 - 导出文件时指定分隔符为空格,替代默认的逗号,无需额外做字符替换操作
完整修改后代码
import os import pandas as pd import csv path = "All_TSV_Files" files = [file for file in os.listdir(path) if file.endswith(".tsv")] c = 0 for file in files: df = pd.read_csv(os.path.join(path, file), comment='#', header=None, sep='\t', engine='python', error_bad_lines=False) # 删除前两列,保留第2列及之后的内容 df = df.iloc[:, 2:] # 导出时指定空格为分隔符,关闭自动引号 df.to_csv(os.path.join(path, f'admin{c}.txt'), index=False, header=False, sep=' ', quoting=csv.QUOTE_NONE) c += 1
注意事项
如果运行后输出文件为空,说明你实际需要保留的是第一列的关键词内容,把删除列的代码替换为df = df.iloc[:, [0]]即可。
已有TXT文件批量处理方案
如果你不想重新处理原始TSV,只需要修改已经生成的TXT文件,可以使用以下代码:
import os path = "All_TSV_Files" files = [file for file in os.listdir(path) if file.startswith("admin") and file.endswith(".txt")] for file in files: file_path = os.path.join(path, file) with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 替换逗号为空格 new_content = content.replace(',', ' ') with open(file_path, 'w', encoding='utf-8') as f: f.write(new_content)
内容的提问来源于stack exchange,提问作者Kimi Shui
相关产品推荐
相关产品推荐

