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

如何使用Pandas读取分隔不规范的.txt文件得到5个固定列

读取方案

方案1:Python原生读取(无依赖)

核心逻辑是对每行文本做最多4次空格分割,直接得到固定5列:

data = []
# 替换为你的文件路径
with open("log.txt", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        # maxsplit=4 表示最多分割4次,剩余内容全部保留为第5个元素
        row = line.split(maxsplit=4)
        data.append(row)

# 打印验证
for row in data[:5]:
    print(row)

如果后续需要合并日期时间列,直接对每行的第3、4个元素拼接处理即可。

方案2:Pandas读取(适合后续数据分析场景)

如果要直接生成结构化的DataFrame,可以用pandas的字符串分割方法实现:

import pandas as pd

# 先将每行内容读取为单列
df = pd.read_csv("log.txt", header=None, names=["raw_line"])
# n=4 表示最多分割4次,拆分出5个固定列
df[["col1", "col2", "date", "time", "content"]] = df["raw_line"].str.split(n=4, expand=True)
# 删掉原始的单列数据
df = df.drop(columns=["raw_line"])

# 合并日期时间为新列(如果日期格式是日/月/年,把format改成"%d/%m/%Y %H:%M:%S"即可)
df["datetime"] = pd.to_datetime(df["date"] + " " + df["time"], format="%m/%d/%Y %H:%M:%S")

# 打印验证
print(df.head())

方案3:Shell命令快速处理(无需写代码)

如果只需要快速生成5列的结果文件,可以直接用awk命令:

awk '{print $1,$2,$3,$4,substr($0, index($0,$5))}' log.txt > 5列结果.csv

执行后会直接生成5列的结果文件,可直接打开使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:07