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

Python实现分号分隔文本文件转列、规则处理及排序

实现代码

直接用pandas批量处理即可,无需逐行循环读取,调整后的代码如下:

import pandas as pd

# 1. 读取分号分隔的源文件,无表头
datafile = r"path\你的文件名.txt"
df = pd.read_csv(datafile, sep=';', header=None)

# 2. 删除Rate(第3列,索引3)和Operator(第5列,索引5)
df = df.drop(columns=[3,5])

# 3. 插入空列作为第4列(索引4)
df.insert(4, 'empty_col', '')

# 4. 处理Offline行的数值后移
# 此时列索引对应关系:0=ID,1=月份,2=年份,3=Customer,4=空,5=在线状态,6=原始数值
# 新增第7列,Offline行将数值移到第7列,Online行第7列为空
df[7] = df.apply(lambda x: x[6] if x[5] == 'Offline' else '', axis=1)
# Online行数值保留在第6列,Offline行第6列为空
df[6] = df.apply(lambda x: x[6] if x[5] == 'Online' else '', axis=1)

# 5. 按第一列(ID)升序排序,如需按其他字段排序可修改by参数
df = df.sort_values(by=0).reset_index(drop=True)

# 6. 输出为对齐格式的txt文件
# 方案1:制表符分隔,适合后续程序读取
df.columns = [0,1,2,3,4,5,6,7]
df.to_csv("New_"+datafile.split('\\')[-1], sep='\t', index=False, header=True)

# 方案2:固定空格宽度对齐,和你给出的示例效果完全一致,取消下方注释即可使用
# with open("New_"+datafile.split('\\')[-1], 'w', encoding='utf-8') as f:
#     # 写表头
#     f.write(f"{'0':<10}{'1':<7}{'2':<8}{'3':<10}{'4':<5}{'5':<10}{'6':<8}{'7':<}\n")
#     # 逐行写内容
#     for _, row in df.iterrows():
#         f.write(f"{row[0]:<10}{row[1]:<7}{row[2]:<8}{row[3]:<10}{row[4]:<5}{row[5]:<10}{str(row[6]):<8}{str(row[7]):<}\n")
注意事项
  • 路径字符串前加r是为了避免Windows路径的反斜杠被识别为转义字符
  • 如果需要修改列的对齐宽度,调整输出字符串中<后的数字即可,数字代表该列占用的字符数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:27:03