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

Python中读取连续数组格式文件并转为可访问嵌套数组

处理无分隔符连续数组文件为嵌套数组的方案

核心思路

你的文件是多个无分隔的[x,y,z]结构直接拼接而成,split()没法精准拆分每个完整子数组。最实用的方案是用正则表达式匹配每个独立的子数组块,再逐个解析成数组元素——这种方式不用修改原文件的高密度存储格式,同时能高效提取出可直接访问的嵌套数组结构。

实现示例(Python)

假设你的文件内容为[4, 2, 2][8, 2, 3][9, 3, 2],可以用以下代码处理:

import re

# 读取文件内容
with open("data.txt", "r") as f:
    content = f.read()

# 匹配固定3个元素的子数组
pattern = re.compile(r'\[(\d+),\s*(\d+),\s*(\d+)\]')
matches = pattern.findall(content)

# 转换为嵌套整数数组
nested_array = [[int(num) for num in group] for group in matches]

# 测试访问元素
print(nested_array[0][0])  # 输出4
print(nested_array[1][2])  # 输出3

如果子数组的元素数量不固定,可改用通用正则匹配:

pattern = re.compile(r'\[([\d,\s]+)\]')
nested_array = []
for match in pattern.findall(content):
    # 拆分并转换子数组内的数字
    elements = [int(num.strip()) for num in match.split(',') if num.strip()]
    nested_array.append(elements)

存储密度相关补充

  • 原格式的存储密度确实优于标准JSON(JSON需要额外的数组分隔符、可能存在冗余空格),所以优先保留原格式+正则解析是最优解。
  • 如果后续必须兼容通用场景,不得不使用JSON,也可以对JSON做无空格压缩:把标准JSON[[4,2,2],[8,2,3]]压缩成[[4,2,2],[8,2,3]],体积和你的原格式差距极小,同时还能直接用json.loads()解析,更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:27:05