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

如何在Python中读取无后缀、疑似Matlab格式的未知类型文件

无后缀结构化文件识别与读取方案

1. 文件类型判定

该文件不是标准二进制Matlab .mat文件,属于Matlab struct/cell变量导出的ASCII序列化自定义文本格式,与JSON结构高度相似但语法规则不同:用等号做键值分隔、布尔值为全大写TRUE/FALSE、字符串未默认加引号。
之前读取失败的原因:

  • scipy.io.loadmat仅支持标准二进制.mat格式,无法识别该ASCII文本类mat格式,因此报版本识别错误
  • numpy.loadtxt为纯数值表格读取工具,无法解析结构化字符{,因此报类型转换错误

2. Python读取方案

优先采用文本预处理转标准JSON的方案,操作简单性能足够适配12MB大小的文件:

操作步骤

  1. 将文件内容全量读取为字符串
  2. 通过正则替换补全JSON语法规则
  3. 用Python内置json库直接解析为字典对象

示例代码

import re
import json

# 替换为你的实际文件路径
file_path = "./your_file_name"

with open(file_path, "r", encoding="utf-8") as f:
    raw_content = f.read()

# 1. 键名加双引号,等号替换为冒号
processed = re.sub(r'(\w+)\s*=\s*', r'"\1": ', raw_content)
# 2. 布尔值转换为JSON标准格式
processed = processed.replace("TRUE", "true").replace("FALSE", "false")
# 3. 无引号的字符串值补双引号
processed = re.sub(r':\s*([A-Za-z0-9_]+)(?=[,}\]])', r': "\1"', processed)
# 4. 移除数组/对象最后一个元素后的多余逗号(JSON不允许 trailing comma)
processed = re.sub(r',\s*([}\]])', r'\1', processed)

# 解析为Python字典
result = json.loads(processed)

异常处理

如果存在特殊字符导致JSON解析失败,可以使用pyparsing库自定义语法规则解析,无需修改原始文本即可适配该自定义格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:24:03