如何使用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
相关产品推荐
相关产品推荐

